首页 > 解决方案 > Firebase 函数:无法读取未定义的属性“post_id”

问题描述

我正在尝试用我的移动应用程序做一个简单的聊天应用程序 firebase 功能。这是我当前的 javascript 代码:

'use-strict'

const admin = require('firebase-admin');
const functions = require('firebase-functions');

admin.initializeApp(functions.config().firebase);

const db = admin.firestore();
db.settings({ timestampsInSnapshots: true });

exports.sendCommentNotification=functions.firestore.document("Notifications/{user_id}/Comment/{comment_id}").onWrite((change,context)=> {

    const user_id=context.params.user_id;
    const comment_id=context.params.comment_id;

  console.log(user_id+":"+comment_id);

return admin.firestore().collection("Notifications").doc(user_id).collection("Comment").doc(comment_id).get().then((queryResult)=>{

        const post_id=queryResult.data().post_id;
        const admin_user_id=queryResult.data().admin_id;
        const noti_id=queryResult.data().notification_id;
        const timestamp=queryResult.data().timestamp;
        const post_desc=queryResult.data().post_desc;

        const admin_data=admin.firestore().collection("Users").doc(admin_user_id).get();
        const commenter_data=admin.firestore().collection("Users").doc(user_id).get();

        return Promise.all([commenter_data,admin_data]).then(result=>{

            const commenter_name=result[0].data().name;
            const commenter_image=result[0].data().image;
            const admin_token=result[1].data().token_id;
            const admin_name=result[1].data().name;

我的火力基地日志

TypeError: Cannot read property 'post_id' of undefined
    at admin.firestore.collection.doc.collection.doc.get.then (/user_code/index.js:20:41)
    at process._tickDomainCallback (internal/process/next_tick.js:135:7)

标签: node.jsfirebasegoogle-cloud-firestoregoogle-cloud-functions

解决方案


queryResult.data()正在返回undefined,表示您查询的文档不存在。queryResult.exists在尝试访问其数据之前,您应该检查布尔值以查看文档是否确实存在。有关更多详细信息,请参阅DocumentSnapshotqueryResult的文档 - 就是这样。


推荐阅读