web-dev-qa-db-ja.com

Firestoreはnullでない場所を選択します

プロジェクトを管理するためにfirebaseを使用していますが、値がnullでないwhere句を含むクエリを作成できません。

例:従業員のコレクションがあります。それぞれがオブジェクトとして機器のリストを持ち、キーは機器ID、値は色です。

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

機器に特定の機器を持っているすべての従業員を獲得したいと思います。 123と言いましょう。

Equipments.123がnullでない従業員からSelect *になります。私はもう試した:

firestore.collection('employees').where(`equipments.${equipmentId}`, '!=', null)

しかし、それは機能していません。

私はそれを機能させることができないようです。手伝って頂けますか。

Firestoreには「等しくない」演算子はありません。しかし、ロジックを見ると、あなたがやろうとしているのは、Stringではなくnullである値のクエリです。 Firestoreはそれを行うことができますwhere()関数に文字列を渡す場合。

したがって、できることは、\uf8ffより小さい値を照会することです。これは、Unicodeの範囲で非常に高いコードポイントです。 Unicodeのほとんどの通常の文字の後にあるため、このクエリはString型のすべてを返します。

firestore.collection('employees').where('equipments.${equipm‌​entId}', '<', '\uf8ff')

または、単に ""(空のString)よりも大きい値を照会できます。

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

存在しないドキュメントのフィールド(たとえば、.existsという名前のフィールド)がtrueに等しいかどうかを確認するだけです

1
repo