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" 到宠物)。
上下文:在客户端上,修改了一个字段,并且该更改作为键路径值对传播到服务器。我从一个关键路径开始,类似于 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" 到宠物)。