首页 > 解决方案 > 获取 Firebase Firestore 集合中最后创建的文档

问题描述

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

标签: angularfirebasegoogle-cloud-firestore

解决方案


有什么方法可以在 Firebase Firestore 集合中获取最后创建的文档?

就在这里!实现这一点的最简单方法是为date集合中的每个对象添加一个属性,然后根据这个新属性降序查询它并调用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 };
    });
});

推荐阅读