2016-10-19 6 views
3

Firebaseでアトミックな削除を実行する方法はありますか?firebase - 複数の場所での原子の削除

docsあなたはまた、setValueのかupdateChildValuesなどの別の書き込み操作の値としてnilを指定することにより削除することができます...この道を作った同時更新がアトミックです

を言う:すべての更新は、更新が成功するか、すべてのいずれか失敗します。

しかし、私はそれを動作させることはできません。以下のコードはエラーを返します

_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

他の誰が同じ問題に遭遇した場合には、私が代わりにnil

NSNull()を使用して、それを修正するために管理
var topNodeRef = FIRDatabase.database().reference() 
var childUpdates: [String:Any] = [:] 

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

topNodeRef.updateChildValues(childUpdates) 
+0

''InvalidFirebaseData'、理由: '(updateChildValues :)パスでオブジェクトに文字列以外のキーは使用できません:' – Trev14

0

構文が、私はこの作業スニペットで使用しているものとは少し異なるようだ:

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

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

ref?.updateChildValues(childUpdates) 
+0

Firebaseポッドを使用していますか?はいの場合は、バージョンを知ることができますか?私が実行しているコードはあなたと論理的には同じですが、私の場合はエラーが発生します。 – meowmeowmeow

+1

私はバージョンを指定しませんでした。しかし、私はバージョンがそれと関係があるとは思わない。これは、辞書に移入するためのSwift構文に関連しているようです。私があなたのアプローチを使って辞書を埋めると、あなたと同じエラーが出ます。私が共有したスニペットに変更したとき、エラーは消え、子供は削除されました。あなたは私のアプローチを試しましたか?それでも同じ行に同じエラーが表示されますか? –

+0

本当に奇妙な、私はあなたのアプローチを使用して辞書に値を追加することはできません。何らかの理由で、値が私の辞書に挿入されません。 - > var dictio:[String:Any?] = [:] dictio.updateValue(nil、forKey: "test") dictio ["secondTest"] = nil – meowmeowmeow

関連する問題