Firestore:设置隐式创建的文档的字段

时间:2019-03-01 15:12:44

标签: google-cloud-firestore angularfire2

我正在使用Google Firestore构建群聊系统。对于每个组,我使用自定义的Firestore文档ID来标识消息所属的聊天室。每当用户向房间发送消息时,即使具有该ID的文档不存在(因为隐式创建文档),此代码段也都有效:

this._firestore
        .collection('rooms')
        .doc('group' + group.id)
        .collection('messages')
        .add({
            uid: message.from.id,
            content: message.content,
            date: firebase.firestore.FieldValue.serverTimestamp()
        })

此方法的优点在于,直到一个用户发送消息后,才会创建表示聊天室的文档。但是,如何存储通道创建时间而又不必每次都在发送消息时检查是否存在文档或文档具有createdAt属性? Thery是否有检测到隐式创建的文档的信号或事件?

1 个答案:

答案 0 :(得分:0)

在您提供的代码段中没有隐式创建任何文档。如果顶层文档还不存在,那么您只会得到一个没有“父”文档的子集合。在Firestore控制台中,文档ID以斜体显示:文档ID存在,但没有文档数据。

可以创建一个Cloud Function,该功能可检测到这种情况并在顶级集合中创建文档。这也是将默认值放入该文档的地方。