gpt4 book ai didi

javascript - 从单个 Firestore 文档返回排序字段

转载 作者:行者123 更新时间:2023-11-29 20:57:15 25 4
gpt4 key购买 nike

Firestore 允许您在查询集合 时对文档 进行排序(例如,citiesRef.orderBy("name")):https://firebase.google.com/docs/firestore/query-data/order-limit-data

但是,有没有办法对文档的字段进行排序?

例如,我在 Firestore 中有以下数据模型:

exampleCollection: {
documentId: {
field1: {sortOnMe: 1, foo: bar},
field2: {sortOnMe: 2, foo: bar},
field3: {sortOnMe: 3, foo: bar}
}
}

我目前正在返回给定文档中的所有字段,如下所示:

exampleCollection.doc(documentId)
.valueChanges()
.subscribe((response) => {
// response = {
// field2: {sortOnMe: 2, foo: bar},
// field3: {sortOnMe: 3, foo: bar},
// field1: {sortOnMe: 1, foo: bar}
// }
});

这很好用并且可以响应变化。但是,exampleData 的顺序是不可预测的,并且可以在添加新字段时更改。有没有一种方法可以根据其中的某些嵌套字段对从上面的查询返回的字段进行排序,例如 sortOnMe

如果不是,是否可以在每个文档中添加一个额外的集合层以便进行排序?来自 Firebase 我对嵌套太深犹豫不决,但这在 Firestore 中可能不是什么大问题。

最佳答案

文档中的数据是 JSON。无法控制 JSON 对象中字段的顺序。您必须在 JavaScript 代码中对其进行排序。

例如

var json = {
field2: {sortOnMe: 2, foo: 'bar'},
field3: {sortOnMe: 3, foo: 'bar'},
field1: {sortOnMe: 1, foo: 'bar'}
};

var keys = Object.keys(json);
keys.sort((a,b) => json[a].sortOnMe - json[b].sortOnMe);

var sorted = keys.map(key => json[key]);

console.log(sorted);

关于javascript - 从单个 Firestore 文档返回排序字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48679478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com