Получить несколько данных из базы данных Firebase в одной облачной функции - PullRequest
0 голосов
/ 25 июня 2018

Я столкнулся с проблемой извлечения двух значений данных одного узла из моей базы данных Firebase и ссылки на него в моем файле JavaScript, но не знаю, как это сделать.Мне удалось извлечь только одно значение данных из узла (в данном случае «сообщение»), но я также хотел бы добавить «из».Большинство уроков просто ссылаются на один, так что я действительно запутался.Итак, как мне получить несколько значений данных?Это мой код ...

JS файл

exports.sendNotification7 = functions.database.ref('/GroupChat/{Modules}/SDevtChat/{SDevtChatId}/message')
.onWrite(( change,context) =>{

// Grab the current value of what was written to the Realtime Database.
var eventSnapshot = change.after.val();
var str = "New message from System Development Group Chat: " + eventSnapshot;
console.log(eventSnapshot);

var topic = "Management.Information.System";
var payload = {
    data: {
        name: str,
        click_action: "Student_SystemsDevt"

    }
};

// Send a message to devices subscribed to the provided topic.
return admin.messaging().sendToTopic(topic, payload)
    .then(function (response) {
        // See the MessagingTopicResponse reference documentation for the
        // contents of response.
        console.log("Successfully sent message:", response);
        return;
    })
    .catch(function (error) {
        console.log("Error sending message:", error);
    });
});

Database Snapshot

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Просто активируйте свою функцию на один уровень выше в JSON:

exports.sendNotification7 = 
functions.database.ref('/GroupChat/{Modules}/SDevtChat/{SDevtChatId}')
.onWrite(( change,context) =>{

    // Grab the current value of what was written to the Realtime Database.
    var eventSnapshot = change.after.val();
    console.log(eventSnapshot);
    var str = "New message from System Development Group Chat: " + eventSnapshot.message;
    var from = eventSnapshot.from;

    ...
0 голосов
/ 25 июня 2018

Вы можете читать с любого количества узлов в облачной функции.Однако, только один может запустить функцию.

Для чтения из вашей базы данных используйте следующий код:

admin.database().ref('/your/path/here').once('value').then(function(snapshot) {

var value = snapshot.val();

});

Возможно, вы захотите прочитать из того же места, что и облачная функциябыл вызван.Используйте context.params.PARAMETER, чтобы получить эту информацию.В примере, который вы разместили, ваш код будет выглядеть примерно так:

admin.database().ref('/GroupChat/'+context.params.Modules+'/SDevtChat/'+context.params.SDevtChatId+'/from').once('value').then(function(snapshot) {

var value = snapshot.val();

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...