Как добавить / обновить / удалить элементы массива в firebase firestore android с помощью Hashmap? База данных магазина

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

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

java,android,firebase,google-cloud-firestore,

2

Ответов: 2


1 принят

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

Начиная с it does not support, теперь можно обновить элементы массива. Дополнительная информация здесь .


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

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

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

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

Видя вашу схему базы данных, я могу сказать, что у вас нет никаких массивов. Это 0объект, под ним есть карта с именем, 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.


1

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

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

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

final Map<String, Object> bookmarkMap = new HashMap<>(), removeBookmark = new HashMap<>();
    bookmarkMap.put("bookmarkId", FieldValue.arrayUnion(mAuth.getUid()));
    removeBookmark.put("bookmarkId", FieldValue.arrayRemove(mAuth.getUid()));

db.collection("REFERENCE").document("mDocumentId")
                .update(bookmarkMap);
Java, Android, firebase, Google-облако-Firestore,
Похожие вопросы