我在我的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函数的局限性
您能建议我如何解决此问题吗?如果没有,那么最好的替代方法是什么?
用于评估代码的典型方法是返回错误值,而不是设置HTTP状态代码。
如果要在MarkLogic enode上为脚本代码提供HTTP接口,则可以考虑编写和安装终结点。
就像说熟悉的一样,与从具有特权角色的客户端发送代码进行评估相比,该方法也更安全。
希望有所帮助,