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

时间:2014-01-22 13:44:16

标签: javascript node.js error-handling runtime-error rethinkdb

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会抛出错误而不是在回调的第一个arg中返回错误?
  2. 为什么它会抛出错误?它不能只在最后返回null并完成请求吗?

1 个答案:

答案 0 :(得分:1)

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

它会返回错误,因为您尝试从null对象中删除字段。 RethinkDB会在Node尝试访问null字段时抛出错误。

为避免错误,您可以执行此操作 r.table( “用户”)。得到( “e@mai.l”)。缺省({}),如果没有( '密码')