【发布时间】:2020-02-14 00:44:53
【问题描述】:
function isAuthenticated() {
return compose()
.use(function(req, res, next) {
if (!req.headers.authorization) {
return res.status(200).send({ status: 'failure', data: [], message: 'Please login to perform this action' });
}
try {
const token = req.headers.authorization;
const decoded = jwt.verify(token, process.env.SECRET_KEY);
User.findOne({ where: { id: decoded.id } }).then(userFound => {
if (userFound) {
req.user = userFound;
next();
} else {
return res.json({ status: 'failure', data: [], message: 'Unauthorised.' });
}
}).catch(e => {
return res.json({ status: 'failure', data: [], message: 'Unauthorised' });
});
} catch (error) {
return res.json({ status: 'failure', data: [], message: 'Authentication failed' + error.message });
}
});
};
它显示如下警告:
(node:9900) 警告:在 /home/nodejs/server/auth/auth.service.js:23:25 的处理程序中创建了一个承诺,但没有从它返回,请参阅
我该如何处理这些警告,我尝试在不同的地方使用 return 语句,但没有解决。
【问题讨论】:
-
你不需要
return User.findOne吗? -
我试过但仍然显示相同的警告
-
如果你创建函数
async你可以await userFound = User.findOne(...);代替。 -
将
return null放在next()调用之后。
标签: javascript node.js sequelize.js bluebird