Rethinkdb如果branch的计算结果为false,则使用现有值

时间:2017-08-09 16:14:01

标签: javascript rethinkdb rethinkdb-javascript

在rethinkdb中使用分支更新逻辑。我需要根据另一个值匹配更新值,然后设置适当的值。如果值相同,则应使用现有值。

r.db('testdb').table('great_table').get(1).update(source => {
  return r.branch(source('some_other_id').eq(1), {read: false}, /* use existing value */);
})

尝试以下方法:

r.db('testdb').table('great_table').get(1).update(source => {
  return r.branch(source('some_other_id').eq(1), {read: false}, source('checked'));
})

我尝试这个时收到的错误是:

{
  "deleted": 0 ,
  "errors": 1 ,
  "first_error":  "Inserted value must be an OBJECT (got BOOL): false" ,
  "inserted": 0 ,
  "replaced": 0 ,
  "skipped": 0 ,
  "unchanged": 0
}

1 个答案:

答案 0 :(得分:1)

在您的查询中,您试图将bool传递给Rethink期待对象的地方。

因此,您的查询应如下所示(取决于您希望保存source('checked')值的字段):

r.db('testdb').table('great_table').get(1).update(source => {
  return r.branch(source('some_other_id').eq(1), {read: false}, {read: source('checked')});
})