1
私はFirebase
に次のデータベースがあるとします。ユーザーが別のユーザーに新しいメッセージを送信するときは、新しいメッセージを"ChatThreads/hash(User1,User2)"
にプッシュし、"UserChats/User1/User2"
と"UserChats/User2/User1"
の両方を更新する必要があります。Firebaseデータベースでは、プッシュ操作と更新操作の両方が必要な場合にデータの整合性を保つ方法は?
"ChatThreads" : {
"hash(User1,User2)" : {
"1" : {
"message" : "Hello",
"sender" : "User2",
"time" : 9835592
},
"2" : {
"message" : "hi",
"sender" : "User1",
"time" : 10000000
},
"3" : {
"message" : "I am boss",
"sender" : "User2",
"time" : 14835592
}
}
}
},
"UserChats" : {
"User1" : {
"User2" : {
"lastTime" : 14835592,
"latestMessage" : "I am boss"
}
},
"User2" : {
"User1" : {
"lastTime" : 14835592,
"latestMessage" : "I am boss"
}
}
}
ケースでデータの一貫性を維持するにはどうすればよいですか? Firebase
のドキュメントでは、複数の更新の共通の親への参照を作成し、すべての更新をマップに格納する方法が導入されました。しかし、この場合、更新だけでなく、プッシュも必要です。
これは非常に難しいです。手順が失敗した場合にロールバックを実行する方法 –