RethinkDB中的条件删除

时间:2016-09-03 15:09:55

标签: rethinkdb

我想删除RethinkDB中的对象,但只有在满足条件的情况下才会删除。

我提出了以下使用replace和null的函数(当将null传入replace()时,RethinkDB删除对象)。但是,我不能让它工作,因为RethinkDB不断返回Cannot perform bracket on a non-object non-sequence null .我只是试图替换一个对象。有什么问题?

r.db('test')
  .table('test')
  .get('123')
  .replace(function(thing) {
    return r.branch(thing('color').ne('green'),
      r.error('Object color must be green to be deleted'),
      null)
  }, { returnChanges: true })

2 个答案:

答案 0 :(得分:2)

你确定第123行存在吗?无论如何,如果您有兴趣避免此错误,有几种方法可以做到这一点,例如为密钥color提供默认值:

    r.db('test')
      .table('test')
      .get("123")
      .replace(function(thing) {
        return r.branch(thing('color').default({color: null}).ne('green'),
          r.error('Object color must be green to be deleted'),
          null)
      }, { returnChanges: true })

答案 1 :(得分:0)

我认为问题出在Kludge指出你从get("123")获得null。您可以使用thing.eq(null)

在分支中测试此条件