gpt4 book ai didi

node.js - 使用 Cloud Functions for Firebase 进行无服务器通知

转载 作者:太空宇宙 更新时间:2023-11-04 02:55:19 25 4
gpt4 key购买 nike

我使用过firebase聊天通知云功能,但是什么时候触发通知我在 firebase 函数中收到此错误控制台

Cannot read property 'current' of undefined

at exports.sendNotification.functions.database.ref.onWrite.event (/user_code/index.js:8:35)

这是我的功能:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.sendNotification = functions.database.ref('/notifications/messages/{pushId}').onWrite(event => {
console.log('Push notification event triggered for testing');
console.log(event);
const message = event.data.current.val();
const senderUid = message.from;
const receiverUid = message.to;
console.log(receiverUid);
const promises = [];

if (senderUid === receiverUid) {
//if sender is receiver, don't send notification
promises.push(event.data.current.ref.remove());
return Promise.all(promises);
}

const getInstanceIdPromise = admin.database().ref(`/usersnew/${receiverUid}`).once('value');
const getSenderUidPromise = admin.auth().getUser(senderUid);

return Promise.all([getInstanceIdPromise, getSenderUidPromise]).then(results => {
const instanceId = results[0].val();
const sender = results[1];
console.log('notifying ' + receiverUid + ' about ' + message.body + ' from ' + senderUid);

const payload = {
notification: {
title: sender.displayName,
body: message.body,
icon: sender.photoURL
}
};

admin.messaging().sendToDevice(instanceId, payload)
.then(function (response) {
return console.log("Successfully sent message:", response);
})
.catch(function (error) {
console.log("Error sending message:", error);
});

return console.log('This is the notify feature');
});
});

有谁知道怎么解决这个问题吗?当我记录事件时,它在控制台中显示如下

{ before: 
DataSnapshot {
app:
FirebaseApp {
firebaseInternals_: [Object],
services_: {},
isDeleted_: false,
name_: '__admin__',
options_: [Object],
INTERNAL: [Object] },
instance: 'https://teleport-24f52.firebaseio.com',
_path: '/notifications/messages/-LIlFNd2spo_V1rM-G-f',
_data: null },
after:
DataSnapshot {
app:
FirebaseApp {
firebaseInternals_: [Object],
services_: {},
isDeleted_: false,
name_: '__admin__',
options_: [Object],
INTERNAL: [Object] },
instance: 'https://teleport-24f52.firebaseio.com',
_path: '/notifications/messages/-LIlFNd2spo_V1rM-G-f',
_data:
{ body: 'abc',
dayTimestamp: 1532975400000,
from: 'q8gtwtwXqbV2DtpsrbYajFsWzSr2',
negatedTimestamp: -1533056068309,
timestamp: 1533056068309,
to: 'Cmpu7mbIENTYyoHZjCjZnbnBMbl2' } } }
10:22:44.625 PM

最佳答案

在您的代码中,event.data.current 应该是 event.after.val()event.after.ref 等...

云函数1.0中API发生了变化。

阅读: https://firebase.google.com/docs/functions/database-events#reading_the_previous_value https://firebase.google.com/docs/functions/beta-v1-diff

关于node.js - 使用 Cloud Functions for Firebase 进行无服务器通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51618621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com