【发布时间】:2020-05-18 18:22:15
【问题描述】:
我正在使用 Firestore 创建消息应用程序
目前我创建了一个函数,当用户在messageRoom 中写入消息时会触发该函数。每个messageRoom 文档都有一个名为messages 的子集合,其中包含房间的消息。 messageRoom 文档本身包含与 messageRoom 本身相关的数据,例如属于messageRoom 的用户。 messageRoom 包含一个名为 members 的字段,其中包含有关属于 messageRoom 的用户的信息
我想访问messageRoom 文档中的数据,而不是messages 子集合。目前以下代码不起作用。一个错误告诉我 members 字段未定义。我做错了什么?
exports.sendNotification = functions
.firestore
.document('messageRooms/{messageRoomId}/messages/{messageId}')
.onCreate(
async (snapshot) => {
/*
Does something with the documents in the subcollection
*/
//Get the DocumentReference of the parent doc
const parentDocId = snapshot.ref.parent.id;
admin.firestore().collection('messageRooms').doc(parentDocId).get('members').get().then(doc => {
if (doc.exists) {
console.log("Document data:", doc.data());
} else {
// doc.data() will be undefined in this case
console.log("No such document!");
}
return; //return added to prevent crash
}).catch(error => {
console.log("Error getting document:", error);
});
}
);
【问题讨论】:
-
您无法在单个查询中从文档中获取特定字段。你必须
get()然后是整个文档,在它返回的快照中找到该字段。我建议查看文档:firebase.google.com/docs/firestore/query-data/…
标签: node.js google-cloud-firestore google-cloud-functions