这就是这种情况。
我有一个包含Users集合的数据库。在某些用户中,我具有userType
属性,但是在某些用户中,没有此属性。 userType
可以等于person
和company
。如何仅选择具有userType
属性的用户?我可以做这样的事情:
let persons = await admin.database().ref('Users').orderByChild('userType').equalTo('person').once('value');
persons = await persons.val();
let companys = await admin.database().ref('Users').orderByChild('userType').equalTo('company').once('value');
companys = await companys.val();
let users = persons + companys;
但这很丑。如何使用Firebase查询对此进行过滤?
我找到了这个答案Query based on multiple where clauses in Firebase,但这是从2014年开始的,所以我希望4年内可以有所改善。
答案 0 :(得分:0)
已进行的改进是发布Cloud Firestore,以替代实时数据库。 Firestore以更合乎逻辑的方式支持一系列简单查询和复合查询。
usersRef.whereEqualTo("userType", "person").whereEqualTo("userType", "company")
话虽这么说,执行OR
查询仍然需要您像上面一样合并两个结果。
如果这对您不起作用,可能值得参考Firebase推荐的Algolia这样的搜索索引器。