【发布时间】:2019-07-17 11:25:18
【问题描述】:
假设我的users 集合中有一些虚拟数据:
[
{email: 'foo@bar.com', claims: {admin: true}}
{email: 'foo1@bar.com', claims: {admin: true}}
{email: 'foo2@bar.com', claims: {support: true}}
{email: 'foo3@bar.com', claims: {support: true}}
{email: 'foo4@bar.com', claims: {support: true}}
]
然后我有这两个查询:
const admins = this.db.collection('users', (ref) => ref
.where('claims.admin', '==', true));
const support = this.db.collection('users', (ref) => ref
.where('claims.support', '==', true));
然后我将它们结合起来进行复合查询:
this.dataSub = combineLatest(
admins.valueChanges(),
support.valueChanges()
)
.pipe(
map((items) => {
return [].concat(...items);
})
)
.subscribe((items) => {
this.items = items;
});
现在我想在这个查询中添加orderBy 之类的内容,但它究竟是如何工作的呢?将orderBy 放在他们身上,例如:
const admins = this.db.collection('users', (ref) => ref
.where('claims.admin', '==', true)
.orderBy('email', 'asc'));
const support = this.db.collection('users', (ref) => ref
.where('claims.support', '==', true)
.orderBy('email', 'asc'));
然后组合结果不会使最终的项目数组正确排序,因为每个列表都是单独排序的..
感觉这应该记录在某个地方,但事实并非如此,我该怎么做?
【问题讨论】:
标签: javascript firebase rxjs google-cloud-firestore angularfire2