通过嵌套数组更新/合并文档



Context:在客户端上,修改一个字段,并将该更改作为密钥路径值对传播到服务器。我从一个密钥路径开始,类似于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制作成一个从名称到宠物的映射(如果你真的想索引,也可以从"转换为字符串的数字"到宠物)。

最新更新