Javascript Nodejs-承诺代码未执行
我不确定问题出在哪里。。。这可能与我的承诺有关。这是一个nodejs/express应用程序。我使用Sequelize.js与我的DB交互,它使用承诺 基本上,用户可以在下面发出post请求 现在,Javascript Nodejs-承诺代码未执行,javascript,node.js,Javascript,Node.js,我不确定问题出在哪里。。。这可能与我的承诺有关。这是一个nodejs/express应用程序。我使用Sequelize.js与我的DB交互,它使用承诺 基本上,用户可以在下面发出post请求 现在,condition1工作正常条件3也可以正常工作。但是,如果结果是condition2console.log消息condition2成功将执行,但res.send('success2!')将执行代码将不执行。。。代码就挂在那里 router.post('/checkUserRoute', functi
condition1
工作正常<代码>条件3也可以正常工作。但是,如果结果是condition2
console.log消息condition2成功
将执行,但res.send('success2!')将执行代码>代码将不执行。。。代码就挂在那里
router.post('/checkUserRoute', function(req, res, next) {
const username = req.body.username;
if (condition1) {
userTable.findOne({
where: {
username: username
}
}).then(function(user) {
if (condition2) {
console.log('Condition 2 success!')
res.send('success2!');
}
if (condition3) {
user.update({
username: 'NewUserName'
}).then(function() {
console.log('Condition 3 success!');
res.send('success3!');
});
}
}).catch(function(err){
res.send('error');
});
}
});
当满足condition2
并到达行res.send('success2!')时代码>以下消息显示在我的终端中:
警告:已在anonymous>的处理程序中创建承诺。。。但未从中返回,请参见
,然后显示以下链接:
该链接建议添加return
,但没有帮助 您能否尝试在…res.send('success2!')之前添加return语句
和…user.update({
和…res.send('success3!')之前)
我添加了三个return
语句…和以前一样,condition1
和condition3
工作正常,但它仍然挂在condition2
的同一位置。唯一的区别是,现在在终端中,消息警告:承诺是在处理程序中创建的…
出现。这真的很奇怪,console.log
和res.send
都不知道是挂起的;它们的执行是同步的。你在做什么对你的环境不常见的事情吗?@guest271314在Express
中定义一个带有函数(req,res,next){…}
的路由意味着你必须调用next()
完成后。在每次返回之前调用next()
,或者,由于您在此处完成了请求,因此只需删除声明即可。即function(req,res){…}
。CommonExpress
error。