javascript - TypeError:无法读取未定义错误的属性“来自”
问题描述
我正在尝试制作一个 Firebase 推送通知应用程序,在上传脚本时出现此错误。我不明白无法读取属性错误
TypeError: Cannot read property 'from' of undefined
at admin.firestore.collection.doc.collection.doc.get.then.queryResult
(/user_code/index.js:16:48)
at process._tickDomainCallback (internal/process/next_tick.js:135:7)
这是我的 node.js 脚本
'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;
console.log("User ID : " + user_id + " | Notification ID : " + notification_id);
return admin.firestore().collection("Users").doc(user_id).collection("NotificationsN").doc(notification_id).get().then(queryResult =>{
const from_user_id = queryResult.data().from;
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;
console.log("FROM : " + from_name +" TO : " + to_name)
return null;
}).catch(error => {
console.error(error);
res.error(500);
});
}).catch(error => {
console.error(error);
res.error(500);
});
});
解决方案
您的代码中有一个拼写错误,试图从子集合中读取文档:
return admin.firestore().collection("Users").doc(user_id).collection("NotificationsN").doc(notification_id).get().then(queryResult =>{
注意N
在NotificationsN
? 这在触发函数的代码中不存在:
functions.firestore.document("Users/{user_id}/Notifications/{notification_id}")
要修复错误,只需删除尾随N
,留下:
return admin.firestore().collection("Users").doc(user_id).collection("Notifications").doc(notification_id).get().then(queryResult =>{
但请注意,整个操作是不必要的:您正在(重新)加载触发该功能的文档。该文档已经传递到您的函数中change.after
,因此您不必重新加载它。您可以直接从那里使用它:
from_user_id = change.before.data().from;
推荐阅读
- javascript - 在另一个元素之前添加元素
- excel - 查找值已更改的单元格
- python - How to get exact float value in python?
- excel - 如何使公式在其他单元格中给出多个结果
- javascript - Reactjs Concat 与 prev 状态
- javascript - 响应搜索 onChange 取消请求
- php - 需要 PHP 5.1.1 之前版本和 PHP 7.2.6 版本中带有反斜杠的字符串示例
- php - 构建动态超级菜单
- android - Android 中的 AWS IoT Policy 不适用于自定义主题
- python - 如何为张量流中的矩阵中的每个行向量构造成对差异的平方?