複雑すぎるのでまとめる
ベースとなるJSONの構造は以下。すべてFirebase Database Emulatorで試している。
posts配下へのフィールドの追加
{ type: 'put', data: '{"path":"/book3","data":"awesome book"}', lastEventId: '', origin: 'http://localhost:9000' }
posts配下フィールド(book2)の更新
{ type: 'put', data: '{"path":"/book2","data":"great book (updated)"}', lastEventId: '', origin: 'http://localhost:9000' }
posts配下フィールドの削除(book3)
{ type: 'put', data: '{"path":"/book3","data":null}', lastEventId: '', origin: 'http://localhost:9000' }
いろいろ試してみたがpatchが飛んでくるケースが見つけられなかった。
あとputとpatchの違いも謎で、一見すると更新系ならpatchでも良さそうだがそれもputで飛んでくる。もしかして孫フィールドの更新ならどうだ? と思い、それぞれのbookに { name: "nice book" }
のようなObjectっぽい構造を持たせて更新を試してみたが、そうすると今度はpathが /book2/name
になった状態でputが送信されてくる。