【发布时间】:2018-02-12 13:10:21
【问题描述】:
我的项目中有两种模式:申请人和公司。 创建、验证和删除用户由同一个 API 进行。 所以,我有一个中间件,它通过会话 ID 解析用户模型。例如,获取当前用户将很有用,首先我们通过其 ID 接收用户,然后发送它。 我的代码如下:
getUserByID(req, res, next) {
if (req.session.user_id) {
async.race([
(callback) => {
Applicant.findOne({_id: req.session.user_id})
.catch(() => {
return apiHelper.handleError(res, 'Unknown error', 'Can not find user')
})
.then(callback)
},
(callback) => {
Company.findOne({_id: req.session.user_id})
.catch(() => {
return apiHelper.handleError(res, 'Unknown error', 'Can not find user')
})
.then(callback)
}
],
(user) => {
if (user) {
res.locals.currentUser = user;
next()
}
return apiHelper.handleError(res, 'User not found', 'Can not log in', 400)
});
} else {
apiHelper.handleError(res, 'Not authed', 'Please, log in', 400)
}}
我对这条路线进行了测试,问题是测试随机通过,随机不通过。我认为这是因为我使用模块异步,或者 smthg 使用它
【问题讨论】:
-
您使用
async.race()的原因是什么?用户是申请人还是公司?
标签: javascript node.js express asynchronous async.js