当前位置: 首页 > 知识库问答 >
问题:

Firebase-在多个位置进行原子删除

金伟
2023-03-14

有没有办法在Firebase中执行原子删除?

医生说

您还可以通过将nil指定为另一个写入操作(如setValue或updateChildValues)的值来删除。。。以这种方式进行的同步更新是原子性的:要么所有更新都成功,要么所有更新都失败。

但我无法让它工作。我下面的代码返回错误

无法在处存储类型为\u SwiftValue的对象。只能存储NSNumber、NSString、NSDictionary和NSArray类型的对象

这里有我遗漏的东西吗?还是文档有问题?

var topNodeRef = FIRDatabase.database().reference()
var childUpdates: [String:Any?] = [:]

childUpdates.updateValue(nil, forKey: "/owner")
childUpdates.updateValue(nil, forKey: "/pet")

topNodeRef.updateChildValues(childUpdates)

共有2个答案

阴英武
2023-03-14

语法似乎与我在此工作片段中使用的略有不同:

var childUpdates: [String:Any?] = [:]

childUpdates["-K9i1z2KPLzh9_OrAaQU"] = nil
childUpdates["-K9i2kfteaS7tap93Gf6"] = nil

ref?.updateChildValues(childUpdates)
公良同
2023-03-14

如果其他人遇到同样的问题,我设法通过使用NSNull()而不是nil来修复它

var topNodeRef = FIRDatabase.database().reference()
var childUpdates: [String:Any] = [:]

childUpdates["/owner"] = NSNull()
childUpdates["/pet"] = NSNull()

topNodeRef.updateChildValues(childUpdates)
 类似资料:
  • 我有Firebase结构,其中包含Android中的用户和组。这是多对多的关系。 Firebase结构 在组节点中添加任何用户时,我也会在用户节点中添加组,但不使用任何类型的事务机制。 现在,我需要执行delete group案例,其中将删除group节点以及每个用户加入的用户节点内的group属性。此场景中必须有一个事务。到目前为止,我已经处理了依赖于相同节点但不依赖于不同节点的事务代码。 我需

  • 问题内容: 我想将Postgres数据库表与Jooq记录列表同步。 我有一个包含复合主键和每行中其他三个值的表 例如,数据可能是 (请使用名称作为主键的不良形式。。。) 我的Java代码中也有该表的Jooq记录列表。假设有两个Java记录 我想发生的是当我运行一些代码时, Joe Smith的数据库行的高度已更新 将为Mark Taylor插入新行 Pete Jones的数据库行已删除 我设法创建

  • 我们使用一个hbase表作为一个大队列。许多客户端可以插入其中,许多客户端希望从中读取数据。问题是互斥。在一个客户机读取数据直到删除它的范围内,另一个客户机也可以读取它!但我们希望确保每一行返回一个且仅返回一个客户端。

  • 问题内容: 如果我在bash中运行,结果将是两个命令都运行。但是,如果我使用子进程,则将运行第一个命令,打印出该行其余部分的全部内容。下面的代码回显而不是,我如何才能运行两个命令? 问题答案: 您必须在子进程中使用shell = True,而不能使用shlex.split: 返回:

  • 我需要帮助找出使用Firebase的最佳方式。我正在制作一个twitter克隆,但与FireFeed不同,我的帖子是可变的。 我的数据库结构如下: 房间,基本上是一个你可以订阅的帖子提要。会议室成员可以向该会议室发帖: 房间/{房间ID}/帖子/{postId}/- 用户,所有用户的全局列表: 用户/{userId}/feed/{postId}- 帖子,实际帖子内容的全球列表: 贴子/{postI

  • 在用户注册Firebase之前,我应该如何验证电子邮件地址?我知道电子邮件地址已通过,但这仅适用于当前用户。因此,必须在发送验证电子邮件之前创建用户。这不会有多大帮助,因为您显然必须在将电子邮件添加到数据库之前验证它。因此,什么是好的解决方法?