J'utilise firebase pour gérer mon projet et je ne parviens pas à créer une requête avec une clause where où une valeur n'est pas nulle.
Exemple: j'ai une collection d'employés. Chacun a une liste d'équipements sous la forme d'un objet dont la clé est l'identifiant de l'équipement et la valeur une couleur.
user = {
firstName: 'blabla',
lastName: 'bloblo',
equipments: {
123: 'blue',
124: 'red'
}
}
Je voudrais obtenir tous les employés qui ont un certain équipement dans les équipements. Disons 123.
Il s'agit de Select * from Employees où equipments.123 n'est pas null. J'ai essayé:
firestore.collection('employees').where(`equipments.${equipmentId}`, '!=', null)
mais ça ne marche pas.
Je n'arrive pas à le faire fonctionner. Pouvez-vous m'aider.
Firestore n'a pas d'opérateur "pas égal". Mais en regardant la logique, vous essayez de faire une requête pour les valeurs qui sont String
et non null
. Firestore peut faire cela si vous passez une chaîne à la fonction where()
.
Vous pouvez donc interroger les valeurs inférieures à \uf8ff
. C'est un très haut point de code dans la gamme Unicode. Comme c'est après la plupart des caractères normaux en Unicode, cette requête retournera tout ce qui est de type String
:
firestore.collection('employees').where('equipments.${equipmentId}', '<', '\uf8ff')
Ou vous pouvez simplement interroger des valeurs supérieures à "" (vide String
):
firestore.collection('employees').where('equipments.${equipmentId}', '>', '')
Je cherche simplement un champ dans le document non existant (champ nommé par exemple .exists) s'il est égal à true