2016-09-03 10 views
1

RethinkDB内のオブジェクトを削除したいのですが、条件が満たされている場合のみです。RethinkDBの条件付き削除

replaceとnullを使用する次の関数を思いつきました(ヌルがreplace()に渡されたときにRethinkDBがオブジェクトを削除します)。しかし、RethinkDBが返され続けるので、私はこれを動作させることができませんCannot perform bracket on a non-object non-sequence null .私は1つのオブジェクトを置き換えようとしています。なにが問題ですか?

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

行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 }) 
0

が、私はその場しのぎのことを指摘したように、問題があると思いますget("123")からヌルを取得します。ブランチでこの状態をテストするには、thing.eq(null)

関連する問題