向apollo graphql发送错误

时间:2018-03-13 02:35:22

标签: node.js express graphql apollo apollo-server

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

class Test {
  float* dev_ptr;
  public:
    Test() {dev_ptr = nullptr;}
    GpuMat test() {
      cv::Size size(8192,8192);
      if (dev_ptr != nullptr) cudaFree(dev_ptr);
      cudaMalloc((void**)&dev_ptr, size.width*size.height*sizeof(float));
      return GpuMat(size, CV_32FC1, dev_ptr);
    }
}
//main
Test t;
while(true) {
  size_t free_mem, total_mem;
  cudaMemGetInfo(&free_mem, &total_mem);
  std::cout << free_mem << std::endl;
  cv::namedWindow("test", CV_WINDOW_OPENGL | CV_WINDOW_NORMAL);
  cv::imshow("test", t.test());
  cv::waitKey(1);
}

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

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
  }
}

1 个答案:

答案 0 :(得分:0)

您在抛出错误后立即捕获错误。您需要完全省略.catch((error) => { log.error('Error in page query.', error.message) throw error }), ,或者在记录后抛出捕获的错误:

{{1}}