编程语言
首页 > 编程语言> > 如何使用rethinkdb JavaScript驱动程序更新嵌套数组

如何使用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