有没有办法在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)
答案 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)