按照Firestore中的文档顺序进行定位[复制]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按照Firestore中的文档顺序进行定位[复制]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

想象一下任何结构:

collection/document

在每个文档中都有一个值,就像某种分数一样。然后我order我的收藏这个分数:collection("collection").orderBy("score")

我可以从这个collection("collection").orderBy("score").where(FieldPath.documentId(), "==", "document1234")中检索一个特定的文件

现在我想知道是否可以按顺序获取我的特定文档的位置。

答案

您可以在文档中添加一个分配索引的函数触发器。您的位置只是索引字段。你需要为onUpdate,onDelete添加一个触发器。

exports.updateScorePosition = functions.firestore.document('collection/{documentId}').onWrite(event => {
    return db.collection('collection').orderBy('points').get()
        .then(snapshot => {
            let updatePointsBatch = db.batch();
            let i = 0;
            snapshot.docs.forEach(doc => {
                updatePointsBatch.update(doc.ref, { index: i})
                i++;
            });
            return updatePointsBatch.commit();
        })
        .catch(error => console.log('error: ' + error));
});

如果您正在使用大型集合,则可以通过仅更新当前文档索引之后的索引来优化此操作

以上是关于按照Firestore中的文档顺序进行定位[复制]的主要内容,如果未能解决你的问题,请参考以下文章

文档流

Firebase 存储规则在 Firestore 文档上查找数据? [复制]

如何获取firestore集合下的文档数量? [复制]

如何在 Firestore -Flutter 中将所有文档从一个集合复制到另一个集合?

如何从 Firestore 集合中获取所有文档并将它们返回到数组列表中? [复制]

Firebase - 使用 Cloud Functions 定位特定的 Firestore 文档字段