gpt4 book ai didi

java - firestore -- 在 hashmap 的字段中添加元素

转载 作者:行者123 更新时间:2023-11-30 01:42:01 25 4
gpt4 key购买 nike

enter image description here

以上是集合“网络”的结构。想要做的是在“用户”字段中添加另一个元素。它是一个HashMap。我想要实现的是 Key= xyz@gmail.com 及其值 {displayName: "Anirudh Kumar", "role":"admin"}。

xyz@gmail.com 显示名称:“Anirudh Kumar” 角色:“管理员”

我尝试了一些方法,但似乎不起作用。

第一个选项

        Map<String, Network.NetworkUser> users = new HashMap<>();
users.put(email, networkUser);

db.collection("networks").document("id")
.update("users",FieldValue.arrayUnion(users));

第二个选项

       db.collection("networks").document(userNetwork.getNetworkUid())
.set(users,SetOptions.merge());

第三个选项

                            db.collection("networks").document(userNetwork.getNetworkUid())
.update("users."+email,networkUser);

enter image description here

第三个选项让我更接近答案,但由于电子邮件中的点 [.],它会创建另一行,请告诉我是否可以避免这种情况。

如果有人可以帮助我如何实现预期目标,我将不胜感激。谢谢。

最佳答案

您的所有尝试均无效,因为您正在尝试使用 Map 更新文档。其中该值是 Network.NetworkUser 类型的对象这是不可能的,因为您无法将该对象映射到 HashMap .

什么是users属性(property)?事实上,是 Map 类型的属性,其中包含其他 HashMap。所以需要先获取文档,获取users的值属性,转换为 Map<String, Object>并放入另一个 HashMap 。这个新的 HashMap 包含一个以电子邮件地址为键的对象和另一个 HashMap作为一个值,它又包含两个带有两个值的键。将所需数据添加到 map 后,只需将文档写回即可。

如果您不希望出现这种行为,您可以简单地在每个 (Network.NetworkUser) 文档下创建一个用户子集合。

关于java - firestore -- 在 hashmap 的字段中添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59611061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com