向 apollo graphql 发送错误

Sending errors to apollo graphql

我有一个这样的查询解析器:

page: (root, args) =>
      DB.page
        .findById(args.id)
        .then((result) => {
          if (result == null) throw Error(`Page not found for ${args.id}`);
          return result;
        })
        .catch((error) => {
          log.error('Error in page query.', error.message);
        }),

当我执行查询时,结果是:

{
  "data": {
    "page": null
  }
}

但是它没有显示我在查询失败时抛出的错误。 我的期望:

{
  "errors": [
    ...
  ]
}

您在错误抛出后立即捕捉到它。您需要完全省略 catch,或者在记录错误后抛出捕获的错误:

.catch((error) => {
  log.error('Error in page query.', error.message)
  throw error
}),