Firebase中的多个where子句

时间:2018-09-20 11:04:12

标签: javascript node.js firebase firebase-realtime-database

这就是这种情况。

我有一个包含Users集合的数据库。在某些用户中,我具有userType属性,但是在某些用户中,没有此属性。 userType可以等于personcompany。如何仅选择具有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年内可以有所改善。

1 个答案:

答案 0 :(得分:0)

已进行的改进是发布Cloud Firestore,以替代实时数据库。 Firestore以更合乎逻辑的方式支持一系列简单查询和复合查询。

usersRef.whereEqualTo("userType", "person").whereEqualTo("userType", "company")

话虽这么说,执行OR查询仍然需要您像上面一样合并两个结果。

如果这对您不起作用,可能值得参考Firebase推荐的Algolia这样的搜索索引器。