我们说我有这个对象:
{
"id": "1a48c847-4fee-4968-8cfd-5f8369c01f64" ,
"sections": [
{
"id": 0 ,
"title": "s1"
} ,
{
"id": 1 ,
"title": "s2"
} ,
{
"id": 2 ,
"title": "s3"
}
]
}
如何直接更改第二个标题" s2"其他价值?没有加载对象并再次保存?感谢。
答案 0 :(得分:8)
更新加上changeAt字词:
r.table('blog').get("1a48c847-4fee-4968-8cfd-5f8369c01f64").update(function(row){
return {
sections: row('sections').changeAt(1,
row('sections')(1).merge({title: "s2-modified"}))
}
}
如果您已经知道要更改的项目的索引,则上述情况很好。如果需要查找索引,然后更新它,可以使用.offsetsOf
命令查找所需元素的索引:
r.table('table').get("1a48c847-4fee-4968-8cfd-5f8369c01f64").update(function(row){
return row('sections').offsetsOf(function(x){
return x('title').eq('s2')
})(0).do(function(index){
return {
sections: row('sections').changeAt(index,
row('sections')(index).merge({title: "s2-modified"}))
}
})
})
修改:修改后的答案以使用changeAt