Облачная функция Firebase Realtime - не может прочитать свойство нулевого снимка - PullRequest
0 голосов
/ 21 марта 2019

Я прошел через все подобные ответы безуспешно, но по какой-то причине моя облачная функция Firebase возвращает snapshot.val (), равный null.Первый файл console.log печатается правильно, давая следующее:

Пользователь: 8Ch7RGBnMrNiQlS6g8xKcDO3cr93 выглядит следующим образом: WpKoFs1UgHTCZegMwjkXyXqrBTz1

нижняя структура в базе данных будет иметь нижнюю структуру.Это ошибка, которую я получаю:

TypeError: Невозможно прочитать свойство 'fcmToken' с нулевым значением в admin.database.ref.once.snapshot

exports.observeFollowing = functions.database.ref('/users/{uid}/following/{followingId}').onCreate((context) => {

var uid = context.params.uid
var followingId = context.params.followingId

console.log('User:' + uid + ' is following: ' + followingId)

return admin.database().ref('/users/{followingId}').once('value', snapshot => {
    console.log(snapshot.val())
    var userWeAreFollowing = snapshot.val()
    var message = {
        notification: {
            title: "You have a new follower",
            body: "It's Tom"
        },
        token: userWeAreFollowing.fcmToken
    };
    admin.messaging().send(message)
    .then((response) => {
        console.log('Successfully sent message:', response);
        return response
    }).catch((error) => {
        console.log('Error sending message:', error);
    });
})

})enter image description here

1 Ответ

4 голосов
/ 21 марта 2019

snapshot.val() будет нулевым, если в указанном вами месте нет данных, что, безусловно, имеет место.

Здесь указано местоположение вашего запроса "/ users / {followId}":

admin.database().ref('/users/{followingId}')

Эта строка воспринимается буквально.Здесь не происходит подстановки переменных.Если вы хотите поместить followingId в эту строку, вам нужно указать JavaScript, чтобы сделать это правильно:

admin.database().ref(`/users/${followingId}`)

Обратите внимание на обратные пометки для разделителя строк и способ указания значений для включения в строку.

Скорее всего, вы перепутали синтаксис для определения функции.

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