我想收集用户,用户将有多个存储作为文档,每个文档都有类似于storeName
、storeAddress
和availableProducts
的字段。我的问题是,如何管理availableProducts阵列?我知道Firestore不能处理数组,我应该使用HashMap。我的可用产品可能有产品名称、产品价格等字段。我是Firebase的新手,如何在Android Studio中使用java管理可用产品阵列?
FireBase Firestore数据库映像
这就是您如何将新项目添加到文档中的现有集合中:
Firebase Firestore.get实例()、集合("COLLECTION_NAME")、文档("DOCUMENT_ID")、更新("NAME_OF_COLLECTION_NODE"、FieldValue.array联盟(NEW_VALUE_OF_ANY_TYPE))
查看此链接了解更多信息:https://firebase.googleblog.com/2018/08/better-arrays-in-cloud-firestore.html
编辑: 2018年9月12日
从2018年8月28日
开始,现在可以更新数组成员。这里有更多信息。
如何在firebase firestore中添加/更新/删除数组元素?
简而言之,你不能!就像在关于数组的官方留档中一样:
尽管云Firestore可以存储数组,但它不支持查询数组成员或更新单个数组元素。
因此,目前无法在Cloud FiRecovery数据库中添加、更新或删除单个数组元素。
看到您的数据库模式,我可以说您没有任何数组。可用产品(availableProducts)是一个对象,下面有一个名为0的映射,它包含两个字符串属性,即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。
好消息是,随着数组的最新改进,您可以添加、更新和删除数组元素。
查看这篇博文:云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 maps to add or remove user
db.collection("REFERENCE").document("mDocumentId")
.update(addUserToArrayMap);
问题内容: 我想收集一个用户,用户将有多个商店作为文档,每个文档都有storeName,storeAddress和字段availableProducts。我的问题是如何管理availableProducts数组?我知道Firestore无法处理数组,我应该使用HashMap。我的可用产品可能具有产品名称,产品价格等字段。我是Firebase的新手,如何availableProduct在Androi
当我点击一个座位时,如何防止重复,这样当我再次点击它时,它就不会追加,而是连续删除/添加。 参见输出的图片
当我点击一个座位时,如何防止重复,这样当我再次点击它时,它就不会追加,而是连续删除/添加。 参见输出的图片
如何从另一个数组中删除数组的元素?我有第一个数组[“a”“b”“c”]。以及第二阵列[“a”、“e”]、[“e”、“b”、“c”]、[“a”、“c”]。 如何从第二个数组中删除第一个数组的元素? 结果,得到[["e"],["e"], []].
给定下面的代码: HTML: 断续器 我必须使用此代码才能删除元素吗?它似乎太冗长了。
但是它从内部数组对象中移除,而不是电话数组中的零索引元素。尝试使用也没有成功。 如何移除MongoDB中的数组元素?