【发布时间】:2019-06-08 06:57:38
【问题描述】:
有没有办法在 Firebase Firestore 集合中获取最后创建的文档?我的要求是当用户签名时,我必须在名为“历史”的集合中添加一个文档;当用户退出时,我想用一个名为“signout”的字段更新该文档;因此,如果我得到最后添加的文档,则很容易更新。有没有办法做到这一点?
【问题讨论】:
标签: angular firebase google-cloud-firestore
有没有办法在 Firebase Firestore 集合中获取最后创建的文档?我的要求是当用户签名时,我必须在名为“历史”的集合中添加一个文档;当用户退出时,我想用一个名为“signout”的字段更新该文档;因此,如果我得到最后添加的文档,则很容易更新。有没有办法做到这一点?
【问题讨论】:
标签: angular firebase google-cloud-firestore
有什么方法可以获取 Firebase Firestore 集合中最后创建的文档?
是的,有!实现这一点的最简单方法是为集合中的每个对象添加一个date 属性,然后根据这个新属性descending 简单地查询它并调用limit(1) 函数。就是这样!
正如@eyyo 在他的评论中提到的,这是一个具体的例子。假设您的数据库架构如下所示:
Firestore-root
|
--- history (collection)
|
--- docId (document)
|
--- date: June 24, 2020 at 6:46:25 PM UTC+3
|
--- //Other properties
这是必需的查询:
this.historyRef = afs.collection<History>('history', ref => ref.orderBy('date', 'desc').limit(1));
this.history = this.historyRef.snapshotChanges().map(actions => {
return actions.map(a => {
const data = a.payload.doc.data() as Hisotory;
const docId = a.payload.doc.id;
return { docId, ...data };
});
});
【讨论】:
Date 属性不需要 需要索引。索引会自动为您创建。如果您需要查询和订购,可以,有an index is required。