按照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 -Flutter 中将所有文档从一个集合复制到另一个集合?