Отправка уведомлений при нажатии кнопки ошибки - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь уведомить моих пользователей, когда кто-то нажимает кнопку перехода, но я продолжаю получать пару ошибок в моих журналах функций Firebase.

Uncaught Exception &

Регистрационные токены, предоставляемые sendToDevice (), должны быть непустой строкой или непустым массивом

exports.observeGoing = functions.database.ref('/going/{postId}/{uid}').onCreate((snapshot,context) => {

var postId = context.params.postId;
var uid = context.params.uid;

console.log('User: ' + uid + ' is going to your activity');

return admin.database().ref('/users/' + uid).once('value', snapshot => {

var creatorOfPost = snapshot.val();

admin.database().ref('/users/' + uid).once('value', snapshot => {

  var userGoing = snapshot.val();

  var payload = {
    notification: {
      body: userGoing.usernames + " is going",
      sound: "default"
    }
  }

  admin.messaging().sendToDevice(creatorOfPost.fcmToken, payload)
  .then((response) => {
    console.log('Successfully send message:', response);
    return response
  })
  .catch((error) =>{
    console.log('Error sending message:', error);
  });
})
})
})

Firebase Database

1 Ответ

0 голосов
/ 01 ноября 2018

Вы видите эту ошибку, потому что creatorOfPost.fcmToken может быть нулевым

Согласно документу Firebase, первый параметр admin.messaging.Messaging.sendToDevice () не может быть нулевым.

Но в вашем коде есть 2 возможности нарушить это предварительное условие.

creatorOfPost.fcmToken может быть нулевым

просто сделайте нулевую проверку перед вызовом admin.messaging.Messaging.sendToDevice()

creatorOfPost может быть нулевым

firebase.database.Reference.once () возвращает DataSnapshot , но это не означает, что соответствующий документ всегда будет.

, var creatorOfPost = snapshot.val(); может быть нулевым.

может быть, вы можете проверить вот так:

return admin.database().ref('/users/' + uid).once('value', snapshot => {
  if (!snapshot.exists()) {
    return; // or do what you would like
  }

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