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

问题描述 投票:0回答:1

我在我的express(v4.16.4)Node应用程序中使用了Marklogic npm模块v2.1.1。在我的控制器函数中,我正在使用db.eval方法使用函数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,返回所需的响应,该响应可以是成功(200个响应代码)或失败(400个响应代码)。成功的情况很好,但是当代码设置为400或更大的响应代码时,我会收到500错误,说

服务器上的eval JavaScript:无法处理状态为403的响应。

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

您能建议我如何解决此问题吗?如果没有,那么最好的替代方法是什么?

node.js express marklogic marklogic-9
1个回答
0
投票

用于评估代码的典型方法是返回错误值,而不是设置HTTP状态代码。

如果要在MarkLogic enode上为脚本代码提供HTTP接口,则可以考虑编写和安装终结点。

就像说熟悉的一样,与从具有特权角色的客户端发送代码进行评估相比,该方法也更安全。

希望有所帮助,

© www.soinside.com 2019 - 2024. All rights reserved.