我正在使用firestore来存储我的数据,我想从我的数据库中获取一组用户,除了一个(当前用户)。我怎么能这样做。
这是我的数据库
的图像在这里,我想要获取除id' gi3oGztVrKQoiEHxFv28TAQpxah2'
之外的所有用户我目前使用的代码是
this.donorCollection = this.fireStore.collection<any>('users').valueChanges();
console.log(this.donorCollection);
this.donorCollection.subscribe(data => console.log(data) );
返回所有用户。这个特定任务的原因是我的当前用户总是在他/她的位置改变时更新他/她的数据库。因此,如果我将valuechanges()
应用于当前集合,它将始终提供新值,因为当前用户正在更新他/她的位置。
答案 0 :(得分:0)
您不能使用Firestore查询排除文档。使用Firestore查询,您可以指定必须为true的所有条件(其中x和y和z等)。
也就是说,如果您要做的就是排除一个文档,那么在客户端上过滤查询结果是微不足道且便宜的。
答案 1 :(得分:0)
只需从集合中过滤,如下所示,
this.donorCollection.subscribe((data) => {
this.users = data.filter(person => person.id != 'gi3oGztVrKQoiEHxFv28TAQpxah2');
console.log(this.users) ;
});
答案 2 :(得分:0)
我能够通过引用它来解决这个问题 -
Queries with a != clause. In this case, you should split the query into a greater-than query and a less-than query. For example, although the query clause where("age", "!=", "30") is not supported, you can get the same result set by combining two queries, one with the clause where("age", "<", "30") and one with the clause where("age", ">", 30).
由于我的phone
字段是唯一的。我通过调用查询解决了这个问题,如下所示
this.donorCollectionLR = this.fireStore.collection<any>('users', ref =>
ref.where('phone', '<', '8086960113')).valueChanges();
this.donorCollectionLR.subscribe(data =>{
this.donorCollectionGR = this.fireStore.collection<any>('users', ref =>
ref.where('phone', '>', '8086960113')).valueChanges();
this.donorCollectionGR.subscribe(data2 =>{
data2=data2.concat(data);
observer.next(data2)
});
});