angular - 在 AngularFire 中查询集合时不能使用“不等于”运算符
问题描述
我正在尝试从与用户无关的 Firebase 中提取一个集合。到目前为止,我已经成功查询到了用户的收藏,但是我似乎无法使用!=
操作符获取与用户无关的收藏。
这是我的代码:
// Does not work!
eventCollection: AngularFirestoreCollection<Event> = this.angularFirestore.collection("events", ref =>
ref.where("uid", "!=", this.firebaseAuth.auth.currentUser.uid)
);
eventCollection$: Observable<Event[]> = this.eventCollection.valueChanges();
// Works!
myCollection: AngularFirestoreCollection<Event> = this.angularFirestore.collection("events", ref =>
ref.where("uid", "==", this.firebaseAuth.auth.currentUser.uid)
);
myCollection$: Observable<Event[]> = this.myCollection.valueChanges();
抛出的错误是:
ERROR in src/app/event/events.service.ts(35,22): error TS2345: Argument of type '"!"' is not assignable to parameter of type 'WhereFilterOp'.
我尝试寻找与 对应的逻辑运算符!=
,但似乎找不到。
任何帮助将不胜感激!
解决方案
根据 Firestore文档:
带有 != 子句的查询。在这种情况下,您应该将查询拆分为大于查询和小于查询。例如,虽然不支持查询子句 where("age", "!=", "30"),但是可以通过组合两个查询得到相同的结果集,其中一个是子句 where("age", "< ", "30") 和一个带有 where("age", ">", 30) 的子句。
所以你必须比较'<'和'>'条件
eventCollection: AngularFirestoreCollection<Event> =
this.angularFirestore.collection("events", ref =>
ref.where("uid", ">", this.firebaseAuth.auth.currentUser.uid)
.where("uid", "<", this.firebaseAuth.auth.currentUser.uid)
);
推荐阅读
- python - 如何在 jupyter notebook 中编写 python 类,然后将其导入以再次使用?
- c++ - 需要读取 UDF 文件系统的文件修改/创建日期和时间
- reactjs - NextJS,在 getServerSideProps 中预加载 Redux 数据
- css - CSS 网格布局隐藏中心列并调整网格以补偿
- c# - 从数据库中获取数据并将其添加到文本框 C# wpf
- firebase - Flutter 解析数据为空
- python - Python方法变量不更新
- javascript - 待办事项列表 React + Redux
- python-3.x - 将模型部署为 Unity 可用版本的相关步骤是什么?
- android - 如何确定 Android 库是否支持 AAB 构建?