我正在使用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);
});
}
);
答案 0 :(得分:0)
我认为问题出在这里
DocumentSnapshot
快照是DocumentReference
,因此ref属性给我们parent
。文档参考的属性CollectionReference
为const parentDocId = snapshot.ref.parent.parent.id;
(Google Doc)。因此,您必须找到的不是父母,而是“祖父母” :)我可以说。也许尝试:
.id
但是,我不会在这里使用.doc
属性只是为了在下一行的parent
中获得引用。 get
属性已提供参考(doc)。我认为.data().messages
中的参数不会改变任何东西,因此我将使用const parentDocRef = snapshot.ref.parent.parent;
parentDocRef.get().then(doc => { console.log(doc.data().members)})
进入该字段。最后,我将使用:
{{1}}
我希望它将对您有帮助!