我正在使用Firebase来管理我的项目,但无法使用其中某些值不为null的where子句创建查询。

示例:我有一批员工。每个设备都有一个设备列表作为对象,其中键是设备ID,值是颜色。

user = {
    firstName: 'blabla',
    lastName: 'bloblo',
    equipments: {
        123: 'blue',
        124: 'red'
    }
}

我想让所有拥有特定设备的员工参与其中。可以说123。

它涉及从设备中选择* *,其中equipments.123不为空。我试过了:
firestore.collection('employees').where(`equipments.${equipmentId}`, '!=', null)

但它不起作用。

我似乎无法使其工作。你能帮助我吗。

最佳答案

2020年9月更新: v7.21.0引入了对不等于(!=)查询的支持!
这意味着您现在可以使用以下代码:

firestore.collection('employees').where('equipments.${equipm‌​entId}', '!=', null)

上一个答案:
Firestore没有“不等于”运算符。但是看逻辑,您要尝试的是查询String而不是null的值。 Firestore can do that(如果您将字符串传递给where()函数)。
因此,您可以做的是查询小于\uf8ff的值。在Unicode范围内,这是一个非常高的代码点。由于它位于Unicode中大多数常规字符之后,因此该查询将返回String类型的所有内容:
firestore.collection('employees').where('equipments.${equipm‌​entId}', '<', '\uf8ff')
或者,您可以简单地查询大于“”(空String)的值:
firestore.collection('employees').where('equipments.${equipm‌​entId}', '>', '')

关于javascript - Firestore选择不为null的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48479532/

10-12 13:21