Firebase Lodash:orderBy如何将文档放在已排序列表的顶部,而不包含我们排序依据的字段?
我使用的是firebase&firestore,我有一个名为Firebase Lodash:orderBy如何将文档放在已排序列表的顶部,而不包含我们排序依据的字段?,firebase,google-cloud-firestore,lodash,Firebase,Google Cloud Firestore,Lodash,我使用的是firebase&firestore,我有一个名为singers的旧集合,其中包含一些结构文档,例如 name: string genre: string, ... 现在,我需要从前端的集合中订购这些文档,并且需要从最旧的文档到最新的文档,但是如果没有像createdAt这样的字段,我就无法完成,因为firestore不提供有关文档创建时间的任何信息 我所做的 首先在注册中添加了字段createdAt,现在新创建的歌手有字段createdAt,但旧歌手没有。所以我想按顺序订购: 所
singers
的旧集合,其中包含一些结构文档,例如
name: string
genre: string,
...
现在,我需要从前端的集合中订购这些文档,并且需要从最旧的文档到最新的文档,但是如果没有像createdAt
这样的字段,我就无法完成,因为firestore不提供有关文档创建时间的任何信息
我所做的
首先在注册中添加了字段createdAt
,现在新创建的歌手有字段createdAt
,但旧歌手没有。所以我想按顺序订购:
的歌手以随机顺序或任何其他字段创建DAT
createdAt
的歌手从最老到最新排序const singers = [
{
name: 'Phil',
genre: 'Pop',
...
},
{
name: 'Bom',
genre: 'Rock',
...
},
{
name: 'Tom',
genre: 'Hiphop',
createdAt: 190000000,
...
},
{
name: 'John',
genre: 'Hiphop',
createdAt: 195000000,
...
},
]
并且它以错误的顺序呈现:
const singerCreatedAt: any = singers.map((singer: Singer) =>
singer.createdAt
? { ...singer, createdAt: singer.createdAt?.toDate() }
: { ...singer, createdAt: new Date(190000000000) },
);
const sortedSingers = orderBy(singerCreatedAt, ['createdAt', 'asc']);
如何使
orderBy
使没有排序字段的文档位于列表的开头?我做了如下操作:
const singerCreatedAt: any = singers.map((singer: Singer) =>
singer.createdAt
? { ...singer, createdAt: singer.createdAt?.toDate() }
: { ...singer, createdAt: new Date(190000000000) },
);
const sortedSingers = orderBy(singerCreatedAt, ['createdAt', 'asc']);