firebase - 多个位置的原子删除

时间:2016-10-19 12:54:53

标签: ios swift firebase firebase-realtime-database

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

docs

  

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

但是我无法让它发挥作用。我的代码返回错误

  

无法存储_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 个答案:

答案 0 :(得分:2)

如果其他人遇到同样的问题,我设法使用NSNull()代替nil来修复它

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

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

topNodeRef.updateChildValues(childUpdates)

答案 1 :(得分:0)

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

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

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

ref?.updateChildValues(childUpdates)