Je veux créer une collection d'utilisateurs, les utilisateurs auront plusieurs magasins en tant que documents, chaque document aura des champs comme storeName
, storeAddress
et availableProducts
. Ma question est la suivante: comment gérer le tableau des produits disponibles? Je sais que Firestore ne peut pas gérer les tableaux, je devrais utiliser HashMap. Mes produits disponibles peuvent avoir un champ comme le nom du produit, le prix du produit, etc. Je suis nouveau dans Firebase, comment puis-je gérer le tableau availableProduct
en utilisant Java in Android Studio?
Edit: 12 septembre 2018
Commençant par August 28, 2018
, il est maintenant possible de mettre à jour les membres du tableau. Plus d'informations ici.
Comment ajouter/mettre à jour/supprimer des éléments de tableau dans un fireestore Firebase?
La réponse courte est que vous ne pouvez pas! Comme dans le documentation officielle concernant les tableaux:
Bien que Cloud Firestore puisse stocker des tableaux,
it does not support
interrogation des membres du tableau ou mise à jour des éléments du tableau unique.
Il n'y a donc actuellement aucun moyen d'ajouter, de mettre à jour ou de supprimer un seul élément de tableau dans une base de données Cloud Firestore.
En voyant votre schéma de base de données, je peux dire que vous n'avez pas de tableaux. availableProducts
est un objet, en dessous il y a une carte nommée 0
qui contient deux propriétés String, spName
et spPrice
. Si vous souhaitez mettre à jour, disons le prix, veuillez utiliser le code suivant:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
DocumentReference ref = rootRef.collection("gdgsghs.cok").document("Shsheg");
Map<String, Object> availableProducts = new HashMap<>();
Map<String, Object> zeroMap = new HashMap<>();
Map<String, Object> product = new HashMap<>();
product.put("spPrice", 63.121);
zeroMap.put("0", product);
availableProducts.put("availableProducts", zeroMap);
ref.set(availableProducts, SetOptions.merge());
Votre prix sera mis à jour à partir de 67.368
à 63.121
.
Bonne nouvelle, avec les dernières améliorations apportées aux tableaux, vous pouvez ajouter, mettre à jour et supprimer un élément de tableau.
Consultez cet article de blog: Meilleurs tableaux dans Cloud Firestore!
Tu peux le faire comme ça
//Map to add user to array
final Map<String, Object> addUserToArrayMap = new HashMap<>();
addUserToArrayMap.put("arrayOfUsers", FieldValue.arrayUnion(mAuth.getCurrentUser().getUid()));
//Map to remove user from array
final Map<String, Object> removeUserFromArrayMap = new HashMap<>();
removeUserFromArrayMap.put("arrayOfUsers", FieldValue.arrayRemove(mAuth.getCurrentUser().getUid()));
//use either maps to add or remove user
db.collection("REFERENCE").document("mDocumentId")
.update(addUserToArrayMap);
Voici comment vous pouvez ajouter un nouvel élément à une collection existante dans un document:
FirebaseFirestore.getInstance().collection("COLLECTION_NAME").document("DOCUMENT_ID").update("NAME_OF_COLLECTION_NODE",FieldValue.arrayUnion(NEW_VALUE_OF_ANY_TYPE))
consultez ce lien pour plus d'informations: https://firebase.googleblog.com/2018/08/better-arrays-in-cloud-firestore.html