Как добавить / обновить / удалить элементы массива в Firebase FireStore Android с помощью Hashmap? База данных магазина - PullRequest
0 голосов
/ 06 июля 2018

Я хочу создать коллекцию пользователей, пользователи будут иметь несколько хранилищ в качестве документов, каждый документ имеет такие поля, как storeName, storeAddress и availableProducts. Мой вопрос заключается в том, как управлять массивом availableProducts? Я знаю, что Firestore не может обрабатывать массивы, я должен использовать HashMap. Мои доступные продукты могут иметь поле, такое как название продукта, цена продукта и т. Д. Я новичок в Firebase, как я могу управлять массивом availableProduct с помощью Java в Android Studio?

Изображение базы данных FireBase Firestore

Ответы [ 3 ]

0 голосов
/ 23 августа 2018

Хорошие новости, ребята, с последним улучшением массивов, вы можете добавлять, обновлять и удалять элементы массива.

Проверьте это сообщение в блоге: Лучше Массивы в Cloud Firestore!

Вы можете сделать это так

//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 map to add or remove user
db.collection("REFERENCE").document("mDocumentId")
                .update(addUserToArrayMap);
0 голосов
/ 17 марта 2019

Вот как вы можете добавить новый элемент в существующую коллекцию внутри документа:

FirebaseFirestore.getInstance().collection("COLLECTION_NAME").document("DOCUMENT_ID").update("NAME_OF_COLLECTION_NODE",FieldValue.arrayUnion(NEW_VALUE_OF_ANY_TYPE))

проверьте эту ссылку для получения дополнительной информации: https://firebase.googleblog.com/2018/08/better-arrays-in-cloud-firestore.html

0 голосов
/ 06 июля 2018

Редактировать: 12 сентября 2018

Начиная с August 28, 2018, теперь можно обновлять элементы массива. Больше информации здесь .


Как добавить / обновить / удалить элементы массива в firebase firestore?

Короткий ответ: вы не можете! Как в официальной документации относительно массивов:

Хотя Cloud Firestore может хранить массивы, it does not support запрашивает элементы массива или обновляет отдельные элементы массива.

Таким образом, в настоящее время нет способа добавить, обновить или удалить отдельный элемент массива в базе данных Cloud Firestore.

Видя схему вашей базы данных, я могу сказать, что у вас нет никаких массивов. availableProducts - это объект, под ним находится карта с именем 0, которая содержит два свойства String, spName и spPrice. Если вы хотите обновить, скажем, цену, пожалуйста, используйте следующий код:

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());

Ваша цена будет обновлена ​​с 67.368 до 63.121.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...