将地图添加到 Firestore Android 上的数组

Posted

技术标签:

【中文标题】将地图添加到 Firestore Android 上的数组【英文标题】:Adding a map to an array on Firestore Android 【发布时间】:2021-12-25 17:56:32 【问题描述】:

我在将数据保存到 Firestore 数据库时遇到了一些问题。我的“会议”集合中的每个文档都有一个用户列表(地图),但我似乎无法添加任何内容或创建新文档。我阅读了文档,它说要使用我尝试过的 FieldValue.arrayUnion():

    private fun addUserToMeeting(user: User) 
        val meetingRef = database.collection("meetings").document(meetingID.toString())

        val userData = hashMapOf(
            "email" to user.email,
            "latitude" to user.latitude,
            "longitude" to user.longitude,
            "token" to user.token,
            "username" to user.username
        )

        meetingRef.update("users", FieldValue.arrayUnion(userData))
    

只要单击“将用户添加到会议”按钮,就会调用此方法。

这是我的架构图片:

有人对我可能做错了什么有一些建议吗?

【问题讨论】:

代码有什么问题?如果您在代码运行时显示文档的“之前”和“之后”屏幕截图,可能最容易解释。 @FrankvanPuffelen 它根本没有做任何事情。当我运行它(通过单击)时,没有会议文件或任何东西。就好像没有发生任何更新一样。创建“exampleUUIDForMeeting”下的“会议”只是为了查看我是否已连接,这有点精明,但它在紧要关头起作用;它不包含任何有价值的信息。 【参考方案1】:

如果文档尚不存在,则不能使用update 创建它。顾名思义,update 只能用于更新现有文档。

要在您控制的位置创建新文档,请使用set

meetingRef.set(hashMapOf("users" to FieldValue.arrayUnion(userData)))

另请参阅 setting a document 上的 Firebase 文档。

【讨论】:

哎呀。那绝对是它。 facepalm 我肯定会抓住它的!

以上是关于将地图添加到 Firestore Android 上的数组的主要内容,如果未能解决你的问题,请参考以下文章

无法访问 Firestore 快照中的数据以将标记添加到存储在 Firebase 中的 Google 地图

将地图列表添加到 Firebase 时出错:Flutter

如何将两个集合添加到 Firestore 中的集合 android studio

Flutter web:从 Firestore 地图检索的值在添加到列表时被截断

Cloud Firestore:从 API 添加和更新数据

使用云功能时,来自 Firestore 的时间戳会转换为地图