RethinkDB抛出错误,而不是在callback中返回它们

Nodejs的情况:

r.db('users').get('e@mai.l').without(['password']).run() 

如果用户不存在rethinkdb将会抛出一个错误

 -- 2014-01-22T13:26:04.720Z [20163] [ ctx error ] -- RqlRuntimeError: Cannot perform without on a non-object non-sequence `null`. in: r.table('users').get('e@mai.l').without(['password']) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

问题:

  1. 为什么Rethink会抛出错误而不是在callback的第一个参数中返回?
  2. 为什么它会抛出错误呢? 不能它只是最后返回null,完成请求?

该错误应该在callback的第一个参数中返回。

它会返回一个错误,因为您试图从空对象中删除一个字段。 RethinkDB抛出一个错误,就像Node试图访问一个null字段时一样。

为了避免错误,你可以使用r.table(“users”)。get(“e@mai.l”)。default({})。without('password')