【发布时间】:2020-10-19 10:50:23
【问题描述】:
我正在使用 firebase 和 firestore,我有一个名为 singers 的旧集合,其中包含一些结构的文档,例如
name: string
genre: string,
...
现在我需要从前端的那个集合中订购这些文档,我需要从最旧的到最新的,但是如果没有像 createdAt 这样的字段,我就无法做到这一点,因为 firestore 不提供任何有关文档创建时间的信息。
我做了什么
注册时先添加字段createdAt,现在新创建的歌手有字段createdAt,但旧的没有。所以我想按这个顺序订购它:
- 所有没有字段
createdAt的歌手,随机顺序或任何其他字段 - 字段
createdAt的歌手从最旧到最新排序
示例数据:
const singers = [
{
name: 'Phil',
genre: 'Pop',
...
},
{
name: 'Bom',
genre: 'Rock',
...
},
{
name: 'Tom',
genre: 'Hiphop',
createdAt: 190000000,
...
},
{
name: 'John',
genre: 'Hiphop',
createdAt: 195000000,
...
},
]
const sortedSingers = orderBy(
singers, // collection with all singers from firestore
[singer => (singer.createdAt?? singer.name)],
['desc'],
);
而且它以错误的顺序呈现:
- 汤姆
- 约翰
- 砰
- 菲尔
我想这样订购:
- 邦/菲尔
- 邦/菲尔
- 汤姆
- 约翰
如何使orderBy使没有有序字段的文档位于列表的开头?
【问题讨论】:
标签: firebase google-cloud-firestore lodash