Rethinkdb 如果分支评估为 false,则使用现有值

Rethinkdb Use existing value if branch evaluates to false

在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
}

在您的查询中,您正试图传递 bool where Rethink expecting object。

因此,您的查询应如下所示(取决于您要在哪个字段中保存 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')});
})