无法读取/user_code/index.js中未定义的属性'From'

时间:2018-11-20 19:15:01

标签: node.js google-cloud-functions

我正在努力在两个应用程序之间发送通知。我已经尝试通过node.js来执行此操作,但是现在我在这个错误上停留了1个月,但是没有找到解决方案。请帮帮我。这对我来说非常重要。我将非常感谢您提供的任何帮助。

"use-strict"
const functions = require('firebase-functions');
const admin= require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.sendNotification= functions.firestore.document('Users/{user_id}/Notifications/{notification_id}').onWrite((change, context) => {

const user_id= context.params.user_id;
const notification_id= context.params.notification_id;

return admin.firestore().collection("ServiceProviders").doc(user_id).collection("Notifications").doc("notification_id").get().then(querySnapshot => {
  const from_user_id= querySnapshot.data().From;
  const from_message= querySnapshot.data().message;

  const from_data= admin.firestore.collection("Users").doc(from_user_id).get();
  const to_data= admin.firestore.collection("Users").doc(user_id).get();


  return Promise.all([from_data, to_data]).then(result => {

    const from_name=result[0].data().name;
    const to_name=result[1].data().name;
    const token_id= result[1].data().token_id;

     const payload= {
       notifications:{
         title: "Notification from : " + from_name,
         body: from_message,
         icon:"default"
       }
     };
    return admin.messaging().sendToDevice(token_id, payload).then(result => {
     return console.log("Notification Sent");
    });
  });
});

here is the monstrous error`

1 个答案:

答案 0 :(得分:1)

您的Firestore查询未返回任何内容;可能是因为该文档/集合不存在。

立即开始,您会发现您的“ notification_id”是字符串查询的,而不是您先前设置的const。有点赌博,但是将第10行更改为此可能会有所帮助:

return admin.firestore().collection("ServiceProviders").doc(user_id).collection("Notifications").doc(notification_id).get().then(querySnapshot => {