'onCreate' ошибка облачной функции firebase - PullRequest
0 голосов
/ 07 июня 2018

Я работаю над Push-уведомлениями на Android через облачные функции Firebase.Мой код работает очень хорошо, когда я использую условие onWrite(), я пытаюсь реализовать эту функцию для комментариев, но в этом случае, когда кто-то редактирует или любит комментарий, он генерирует уведомление, поэтому я изменил его на onCreate(), но теперьЯ получаю сообщение об ошибке TypeError: Cannot read property 'val' of undefined.

Вот оно ..

exports.pushNotificationCommentsPost = functions.database.ref('/post-comments/{postId}/{commentId}').onCreate((change, context) => {

    const commentId = context.params.commentId;
    const postId = context.params.postId;
    const comment = change.after.val();
    const posType = "Post";


    const getPostTask = admin.database().ref(`/posts/${postId}`).once('value');

    return getPostTask.then(post => {
        // some code
    })
});

Я думаю, что проблема в const comment = change.after.val();, но я не могу ее выяснить.

1 Ответ

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

Вам нужно изменить это:

exports.pushNotificationCommentsPost = functions.database.ref('/post-comments/{postId}/{commentId}').onCreate((change, context) => {

на это:

exports.pushNotificationCommentsPost = functions.database.ref('/post-comments/{postId}/{commentId}').onWrite((change, context) => {

для работы, поскольку onWrite срабатывает, когда данные создаются, обновляются или удаляются в режиме реального времениБаза данных.Таким образом, вы можете извлечь данные before и after, которые они изменили.

onCreate() срабатывает при создании новых данных в базе данных реального времени.Поэтому вы можете извлечь только те данные, которые были добавлены недавно, например:

exports.dbCreate = functions.database.ref('/path').onCreate((snap, context) => {
 const createdData = snap.val(); // data that was created
});

Более подробная информация здесь:

https://firebase.google.com/docs/functions/beta-v1-diff#realtime-database

В вашем случае измените их на эту:

exports.pushNotificationCommentsPost = functions.database.ref('/post-comments/{postId}/{commentId}').onCreate((snap, context) => {

const commentId = context.params.commentId;
const postId = context.params.postId;
const comment = snap.val();
const posType = "Post";

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