firebase 获取子集合的父文档的ID

rekjcdws  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(237)

请考虑以下图像:

我正在Node.js中编写一个云函数,并创建了一个当用户在messageRoom中写入消息时触发的函数。当函数被触发时,它在messages子集合中有一个消息文档的快照。
有没有一种方法可以让我得到父文档的id,例如2AelOkjccuGsfhXIcjWR,它包含正确的子集合?

wydwbb8l

wydwbb8l1#

如果你的函数被触发“当用户在messageRoom中写消息时”,文档路径应该像messageRooms/{roomId}/messages/{messageId},云函数应该如下所示。然后,您可以使用上下文对象并简单地执行context.params.roomId

exports.getParentId = functions.firestore
    .document('messageRooms/{roomId}/messages/{messageId}')
    .onCreate((snap, context) => {
        const parentDocId = context.params.roomId;
        console.log(parentDocId);
        //...
     })

如果您的云函数不同,并且您无法使用context,则另一种解决方案包括一方面使用DocumentReferenceparent属性,另一方面使用CollectionReference
类似于:

const snapRef = snap.ref;   //Reference of the Document Snapshot
    const messagesCollectionRef = snapRef.parent;  //Reference of the messages collection (i.e. the parent of the Document)
    const roomRef = messagesCollectionRef.parent;  //Reference of the room doc (i.e. the parent of the messages collection)
    const roomId = roomRef.id;   //Id of the room doc

相关问题