Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift Firestore“;“更新数据”;删除文档中的所有字段_Swift_Firebase_Google Cloud Firestore - Fatal编程技术网

Swift Firestore“;“更新数据”;删除文档中的所有字段

Swift Firestore“;“更新数据”;删除文档中的所有字段,swift,firebase,google-cloud-firestore,Swift,Firebase,Google Cloud Firestore,在我的项目中,我有一个“employees”集合,其中每个员工文档都包含文件,如:firstName、lastName、zipCode、refreshToken等。 当尝试只更新refreshToken的一个值时,我使用“updateData”,如文档中所示 我的代码: static func updateToken(token:String){ Firestore.firestore().collection("companies").document(self.user.compa

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

    static func updateToken(token:String){

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

但这会删除employee文档的所有其他值(firstName、lastName、zipCode等),操作后节点中只存在refreshToken的新值。我是在做什么工作还是误解了“updateData”的概念?

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

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

请参阅,如果要更新字段的值,并且如果文档确实存在,则将使用f
setData()
函数代替
updateData()
,除非指定数据应合并到现有文档中,否则其内容将被新提供的数据覆盖,如下所示:

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

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

对我来说很不错。您确定更新后没有执行其他操作吗?此外,您还可以添加完成处理程序并打印错误(如果有)。尝试重新启动xcode/clean/rebuild没有任何帮助,因此我在“updateData”中又添加了一个字段:updateData([“refreshToken”:token,“firstName”:“John]),这使得它可以在不删除其他字段的情况下工作-仍然不理解为什么,但我想:S(tryed error handler以及Vasil-没有出现错误:s)看起来不错。你确定更新后没有执行其他操作吗?如果有错误,你也可以添加完成处理程序和打印错误。tryed重新启动xcode/clean/rebuild没有任何帮助,所以我所做的是在“updateData”中添加了一个字段,因此:updateData([“refreshToken”)“:token,“firstName”:“John]),这使得它可以在不删除其他字段的情况下工作-仍然不理解为什么,但我猜它可以工作:S(尝试错误处理程序以及Vasil-没有出现错误:S)