【问题标题】:Firestore "updateData" removes all the fields in documentFirestore“updateData”删除文档中的所有字段
【发布时间】:2018-12-08 12:08:18
【问题描述】:

在我的项目中,我有一个“员工”集合,其中每个员工文档都包含以下文件:firstName、lastName、zipCode、refreshToken 等。 当尝试仅更新 refreshToken 的值时,我使用“updateData”,如文档docs 中所示 我的代码:

    static func updateToken(token:String){

Firestore.firestore().collection("companies").document(self.user.companyId).collection("employees")
    .document(self.user.employeeId).updateData(["refreshToken" : token])
}

但这会删除员工文档的所有其他值(名字、姓氏、邮政编码等),并且在操作后节点中仅存在新的 refreshToken 值。我是在做一些旧事还是我误解了“updateData”的概念?

【问题讨论】:

  • 我觉得不错。你确定你更新后没有做其他事情吗?您还可以添加完成处理程序并打印错误(如果有)。
  • 尝试重新启动 xcode/clean/rebuild 没有任何帮助,所以我在 'updateData' 中添加了一个字段: updateData(["refreshToken" : token,"firstName":"John]) 和这使它在不删除其他字段的情况下工作 - 仍然不明白为什么,但我猜它工作:S(尝试了错误处理程序以及 Vasil - 没有出现错误:s)

标签: swift firebase google-cloud-firestore


【解决方案1】:

如果您要更新字段的值并且如果文档确实存在,则其内容将被新提供的数据覆盖,除非您指定数据应合并到现有的文件,如下:

Firestore.firestore().collection("companies").document(self.user.companyId)
    .collection("employees").document(self.user.employeeId)
    .setData(["refreshToken" : token], merge: true)
}

看,我使用了setData() 函数而不是updateData()

【讨论】:

    猜你喜欢
    • 2021-09-29
    • 2018-04-09
    • 2020-09-11
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 2018-11-01
    相关资源
    最近更新 更多