在远程方法上的环回中发送响应 beforeRemote hook

我正在为我的应用程序使用环回 v3 我的用例是验证请求标头中是否存在某些令牌,如果令牌无效,则以标准格式发送适当的消息。我正在尝试使用 beforeRemote 来做到这一点。


我尝试过的是在令牌无效并且响应通过自定义中间件(使用 express res 对象)格式化时返回承诺拒绝,我能够做到这一点。当我这样做时,我收到了承诺未处理的拒绝警告,似乎 Loopback 没有处理承诺拒绝。有没有更好的方法来处理用例。


Module_Name.beforeRemote("*", async function(ctx, modelInst, next) {


let token = getTokenFromHeader(ctx.req.headers);

let tokenValid = await helper.validateToken(token);


if (tokenValid){

 return Promise.reject({statusCode:401}); // will not continue 

next(); // call respective remote method

});


显示警告


(节点:17177)未处理的PromiseRejectionWarning:错误:回调已被调用。


(node:17177) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误要么是因为在没有 catch 块的情况下抛出了异步函数,要么是因为拒绝了一个没有用 .catch() 处理过的承诺。(拒绝编号:1)


我也尝试浏览该文档,但没有帮助。


翻翻过去那场雪
浏览 200回答 2
2回答

湖上湖

试试这个://不使用单astrick,使用双astrick处理原型和非原型的方法 Module_Name.beforeRemote('*', function (ctx, modelInst, next) {    let token = getTokenFromHeader(ctx.req.headers);    helper.validateToken(token).then((validToken) => {        //for success, proceed with next()        next();    }, (invalidToken) => {        next(throwError());    }).catch((ex) => {        next(throwError());    });    function throwError() {        let error = new Error();        error.statusCode = 401;        error.message = "Invalid Token"        return error;    }});

慕哥6287543

这可能意味着调用函数正在使用等待,因此承诺已经解决。你试试怎么样return {statusCode:401};反而?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript