MarkLogic Node.js npm 模块无法处理 >400 错误状态

MarkLogic Node.js npm module cannot process >400 error status

我将 Marklogic npm 模块 v2.1.1 与我的 express(v4.16.4) Node 应用程序一起使用。在我的控制器函数中,我使用 db.eval 方法 return 数据以及使用函数 xdmp.setResponseCode() 的必要状态代码。请找到下面的代码片段

// controller function 
function getNewsArticleById(db: any, fileName: string, req: any, res: any, next: any) {
  return db.eval(
     `xdmp.setResponseCode(403, 'Forbidden');
     {data: 'abc'};`,
     {},
     })
    .result(
      data => {
        res.json(data[0].value);
      },
      err => {
        console.log(err);
        next(err);
      });
}

上述函数附加到路由 t return 所需的响应可能是成功(200 个响应代码)或失败(400 个响应代码)。成功案例工作正常但是当代码设置为 400 或更大的响应代码时,我收到 500 错误说

eval JavaScript on server: cannot process response with 403 status.

对我来说,这似乎是 db.eval() MarkLogic 函数的限制

你能建议我如何解决这个问题吗?如果没有,什么是处理它的最佳替代方案?

评估代码的典型方法是 return 错误值而不是设置 HTTP 状态代码。

如果您想为 MarkLogic enode 上的脚本代码提供 HTTP 接口,您可以考虑编写和安装端点。端点可以完全控制 HTTP 响应。

您还可以编写并安装资源服务扩展,它由 REST API 调用,但可以在抛出错误时指定错误 HTTP 状态,如下所述:

http://docs.marklogic.com/guide/rest-dev/extensions#id_20992

很可能是说,安装端点或资源服务扩展也比从具有特权角色的客户端发送代码进行评估更安全。

希望对您有所帮助,