如何更新对象数组?
How to update an array of objects?
例如,
{
id:"monday",
names:[
{one:"white", two:"pink"},
{uno:"blanco", dos:"rosado"}
]
}
如何将 white
更改为 black
?
到目前为止,我得到了这个:
r.db.table.get('monday').update({
names: r.row("names").nth(0)
})
其中指定了names
的第0个索引,但不确定如何进一步指定one
字段然后更改它。
也许您的数据存储在一个名为obj
的对象中;像
var obj = {...}
你可以做到这一点:
obj.names[0].one = "black";
我实际上已经尝试使用 firebug 没有问题。
数组中的每个元素都是独立的,所以不用担心。
首先,您应该使用 replace
而不是 update
。
- 获取没有
names
字段的记录。
merge
它与新的 names
(从中删除第一个元素,在第一个位置添加我们将 white
替换为 black
的新元素 one
字段)
像这样:
r.db.table.get('monday').replace(function(doc){
return doc.without({names: true}). merge({
names: doc("names").deleteAt(0).prepend(doc("names").nth(0).merge({
one : "black"
}))
})
})
到目前为止你所拥有的是非常正确的,但是你将 names
替换为它的第一个子对象(我想你已经看到了那个结果)。
你只需要使用一个merge
来改变子对象,然后在names
上使用一个changeAt
将改变的子对象放入数组中,就像这样:
r.db.table.get('monday').update({
names: r.row('names').changeAt(0, r.row('names').nth(0).merge({one: 'black'}))
})
希望对您有所帮助!
例如,
{
id:"monday",
names:[
{one:"white", two:"pink"},
{uno:"blanco", dos:"rosado"}
]
}
如何将 white
更改为 black
?
到目前为止,我得到了这个:
r.db.table.get('monday').update({
names: r.row("names").nth(0)
})
其中指定了names
的第0个索引,但不确定如何进一步指定one
字段然后更改它。
也许您的数据存储在一个名为obj
的对象中;像
var obj = {...}
你可以做到这一点:
obj.names[0].one = "black";
我实际上已经尝试使用 firebug 没有问题。 数组中的每个元素都是独立的,所以不用担心。
首先,您应该使用 replace
而不是 update
。
- 获取没有
names
字段的记录。 merge
它与新的names
(从中删除第一个元素,在第一个位置添加我们将white
替换为black
的新元素one
字段)
像这样:
r.db.table.get('monday').replace(function(doc){
return doc.without({names: true}). merge({
names: doc("names").deleteAt(0).prepend(doc("names").nth(0).merge({
one : "black"
}))
})
})
到目前为止你所拥有的是非常正确的,但是你将 names
替换为它的第一个子对象(我想你已经看到了那个结果)。
你只需要使用一个merge
来改变子对象,然后在names
上使用一个changeAt
将改变的子对象放入数组中,就像这样:
r.db.table.get('monday').update({
names: r.row('names').changeAt(0, r.row('names').nth(0).merge({one: 'black'}))
})
希望对您有所帮助!