J'ai une collection appelée "catégories" contenant un seul document avec l'ID: 5gF5FqRPvdroRF8isOwd.
J'ai une autre collection appelée "tickets". Chaque ticket a un champ de référence qui attribue le ticket à une catégorie particulière.
Le champ de la collection de tickets est appelé "catégorie" et a un type de champ reference
.
Dans le code ci-dessous, categoryDocId
est l'ID de document de la catégorie que je souhaite interroger.
const categoryDocID = `5gF5FqRPvdroRF8isOwd`;
const files = await firebase
.firestore()
.collection('tickets')
.where('category', '==', categoryDocID)
.get();
Pourquoi files.length
retourne 0?
Pour les tests, j'ai changé le type de champ category
en chaîne et l'ai défini sur l'ID de catégorie au lieu d'une référence directe. Cela a renvoyé correctement les tickets affectés à la catégorie, ce qui m'amène à croire que c'est quelque chose sur la façon dont je recherche un champ reference
.
Comme vous le lirez ici dans le document, le type de données de référence est utilisé pour stocker DocumentReferences .
Si vous souhaitez l'utiliser dans une requête, vous ne pouvez pas utiliser une simple chaîne, ni l'UID du document (c'est-à-dire '5gF5FqRPvdroRF8isOwd'
), ni la valeur de chaîne stockée dans le champ (c'est-à-dire '/categories/5gF5FqRPvdroRF8isOwd'
).
Vous devez créer un DocumentReference et l'utiliser dans votre requête, comme suit:
const categoryDocRef = firebase.firestore()
.collection('categories')
.doc('5gF5FqRPvdroRF8isOwd');
const files = await firebase
.firestore()
.collection('tickets')
.where('category', '==', categoryDocRef)
.get();