如何使用rethinkdb JavaScript驱动程序更新嵌套数组
作者:互联网
我检查了其他相关问题,尤其是this one.但是,由于已回答该问题,因此似乎在重新考虑对嵌套字段has changed的处理.
我正在尝试修改嵌套数组“ amy”和“ joe”:
{
"id": "blah" ,
"schedules": {
"amy": ['some', 'stuff', 'here'],
"joe": ['more', 'stuff', 'here']
}
}
我尝试了各种不同的方法,但是无法在一次调用数据库的情况下使它工作.相反,我必须使用一个调用来获取现有数组:
r.table('whatevs').get('blah').pluck({schedules: {amy: true}})
这使我看起来像:
"schedules": {
"amy": ['some', 'stuff', 'here']
}
所以我拿出schedules.amy,然后修改数组…
r.table('whatevs').get('blah').update({schedules: {amy: [modified_array]}})...
我想做的是使用.difference()和.append()通过单个查询在适当的位置修改数组.现在看来这是可能的,但是无论我尝试使用哪种语法,它都将被拒绝.
解决方法:
如果要更新单个键即数组,可以这样进行:
r.table('whateves').get('blah').update(function(row) {
return {schedules: {amy: row('schedules')('amy').append('new_value')}};
});
标签:rethinkdb,javascript 来源: https://codeday.me/bug/20191028/1949654.html