【问题标题】:Get last created document in a Firebase Firestore collection获取 Firebase Firestore 集合中最后创建的文档
【发布时间】:2019-06-08 06:57:38
【问题描述】:

有没有办法在 Firebase Firestore 集合中获取最后创建的文档?我的要求是当用户签名时,我必须在名为“历史”的集合中添加一个文档;当用户退出时,我想用一个名为“signout”的字段更新该文档;因此,如果我得到最后添加的文档,则很容易更新。有没有办法做到这一点?

【问题讨论】:

    标签: angular firebase google-cloud-firestore


    【解决方案1】:

    有什么方法可以获取 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 };
        });
    });
    

    【讨论】:

    • 你能解释一下吗?
    • 试试看,让我知道。
    • 此解决方案的问题是您必须手动为 Firebase 控制台中的每个文档创建一个索引。有没有其他方法可以插入最新的文档?
    • @BluE_MoOn 只需添加Date 属性不需要 需要索引。索引会自动为您创建。如果您需要查询和订购,可以,有an index is required
    • @1x2x3x4x 是的,确实只有一次读取,因为您的查询只返回一个文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2020-08-15
    • 2021-05-09
    • 2018-04-09
    • 2021-02-20
    • 2018-10-21
    • 2018-09-26
    相关资源
    最近更新 更多