Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用firebase云函数从firebase发送推送通知_Javascript_Node.js_Firebase_Firebase Realtime Database_Firebase Cloud Messaging - Fatal编程技术网

Javascript 使用firebase云函数从firebase发送推送通知

Javascript 使用firebase云函数从firebase发送推送通知,javascript,node.js,firebase,firebase-realtime-database,firebase-cloud-messaging,Javascript,Node.js,Firebase,Firebase Realtime Database,Firebase Cloud Messaging,我通过以下方式发送推送通知: exports.sendPushNotification = functions.database.ref('/chat_rooms/{id}').onWrite(event => { console.log(event); const original = event.data.val(); const reciverId = original['receiverID']; const text = original['text']; const sen

我通过以下方式发送推送通知:

exports.sendPushNotification = 
functions.database.ref('/chat_rooms/{id}').onWrite(event => {

console.log(event);
const original = event.data.val();
const reciverId = original['receiverID'];
const text = original['text'];
const senderName = original['senderName'];
var path = 'fcmToken/' + reciverId;

const payload = {
notification: {

title :senderName,
body: text,
badge:'7',
sound:'default',

    }
};
return admin.database().ref(path).once('value').then(allToken => {
    if (allToken.val()){
      var firebaseReceiverID = allToken.val();
      var firebaseToken = firebaseReceiverID['firebaseToken'];

     return admin.messaging().sendToDevice(firebaseToken,payload).then(response => {
     });
      };
   });
 });
我的firebase数据库结构如下所示:
如何在聊天室下添加任何子项时发送推送(以检测路径)

onWrite
是一个数据库触发器,因此每次在指定位置下添加数据时,都会触发推送

现在,如果要获取id,可以执行以下操作:

export.sendPushNotification=functions.database.ref('/chat_rooms/{PerticularChatRoomid}/‌​‌​{id}').onWrite(eve‌​nt => { 

console.log(event);
const chatroomid=event.params.PerticularChatRoomid;

}
这样,您就可以从数据库中获取
聊天室ID

要获取通配符
{id}
的值,请始终使用
event.params


此链接中的更多信息:

onWrite
是一个数据库触发器,因此每次在指定的位置下添加数据时,都会触发该触发器

现在,如果要获取id,可以执行以下操作:

export.sendPushNotification=functions.database.ref('/chat_rooms/{PerticularChatRoomid}/‌​‌​{id}').onWrite(eve‌​nt => { 

console.log(event);
const chatroomid=event.params.PerticularChatRoomid;

}
这样,您就可以从数据库中获取
聊天室ID

要获取通配符
{id}
的值,请始终使用
event.params


此链接中的更多信息:

是否正在发送当前推送通知?你在这里得到了什么
console.log(事件)?当添加新聊天室时,它会执行,否则它不会执行。我想在聊天室添加消息时执行。是的,这是正确的,那么问题出在哪里?这就是onWrite的目的,当在该位置添加任何内容时,它会被触发。msg在数据库中的什么位置?嗨,彼得,谢谢,问题是如何在聊天室I thin下添加最新的msg。结构应该是这样的函数。database.ref('/chat_rooms/{Perticular chat rooms id}/{id}')。onWrite(event=>{}这里如何获取添加msg的聊天室id。functions.database.ref('/chat_rooms/{聊天室_id}/‌​{id}').onWrite(event=>{}这里是特定的聊天室id如何获取当前发送的推送通知?您在这里获取什么
console.log(event)
?当添加新聊天室时,它会执行,否则它不会执行。我想在聊天室添加msg时执行。是的,这是正确的,那么问题是什么?这就是onWrite的目的。当在该位置添加任何内容时,它会被触发。msg在数据库中的什么位置?嗨,彼得,谢谢,问题是如何获取最新的消息在聊天室I thin下添加的Tmsg结构应该如下所示:functions.database.ref('/chat_-rooms/{perticularchatrooms\u-id}/{id}').onWrite(event=>{}这里如何获取添加了msg的perticularchatroomid函数。database.ref('/chat_-rooms/{perticularchatrooms\u-id})/‌​{id}').onWrite(event=>{}这里是特定的聊天室id如何获取它