Comment obtenir une carte stockée dans Cloud Firestore avec Dart / Flutter? J'ai essayé cela mais cela ne fonctionne qu'avec Array:
Firestore.instance .collection('posts') .orderBy('createdAt', descending: true) .where("userlist", arrayContains: userId) .snapshots(),
voici la carte stockée dans firebase
3 Réponses :
Cela n'a pas vraiment de sens que la userlist
d'utilisateurs soit un tableau ici. Firestore ne vous permet pas d'interroger les valeurs des cartes dans un tableau. Enregistrez-le simplement sous forme de carte. Si la userlist
n'était qu'une carte de paires uid / valeur, vous pouvez l'interroger comme ceci en utilisant la notation par points:
Firestore.instance .collection('posts') .orderBy('createdAt', descending: true) .where('userlist.' + userId, isEqualTo: true) .snapshots(),
Merci ! En fait, c'était une carte stockée dans une liste. Cela a résolu le problème côté firebase. Cependant, avec ce code côté flutter, j'obtiens l'instantané mais il est vide. J'ai exactement la même syntaxe que vous et userId est la même que la première valeur de clé. Avez-vous une idée pourquoi?
Si vous avez une nouvelle situation avec un problème différent, vous devriez le publier comme une nouvelle question.
En ajoutant simplement à la réponse de Doug Stevenson, j'ai dû utiliser la clé isGreaterThan: ''
afin de ne pas obtenir un tableau vide.
Firestore.instance .collection('posts') .where('userlist.' + userId, isGreaterThan: '') .snapshots(),
Je ne recommande pas votre manière de modèle de données. En raison de certaines limitations comme ci-dessous:
Donc, mieux je vous recommanderais d'utiliser des documents pour chaque utilisateur.