我想删除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 })
答案 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)