Updating/merging 一个文档通过嵌套数组

Updating/merging a document through nested array

上下文:在客户端上,修改了一个字段,并且该更改作为键路径值对传播到服务器。我从一个关键路径开始,类似于 foo.bar.baz = cat,我可以将其转换为 {foo: {bar: {baz: "cat"}}},然后将 merge 转换为我的文档(可能看起来像 {foo: {bar: {baz: "dog"}}}).

到目前为止,这对所有 对象 都运行良好,但是当我需要对 数组 做一些事情时它就会崩溃。


假设我在 RethinkDB 中的文档如下所示:{name: "Me", pets: [{name: "Shadow"}]}。用户决定更新宠物的名字,因此键路径看起来像 pets[0].name = Sparky。据我所知,这不能简单地(或非平凡地)转换成我可以传递给 merge 的东西。或者可以吗?想法?

你必须写类似 .update(function(row) { return {pets: row('pets').changeAt(0, row('pets')(0).merge({name: 'Sparky'}))};}) 的内容。我建议改为制作 pets 从名字到宠物的映射(如果你真的想要索引,则从 "numbers converted to strings" 到宠物)。