【发布时间】:2018-01-13 23:06:00
【问题描述】:
所以,我开始了我的 nodejs 之旅。我有其他语言的经验,但 promise 的概念对我来说很新。
我的nodejs环境是expressjs + sequelize。
我正在创建一个基本的寄存器流程,但我遇到了一个基本问题:如何在 then 中停止处理
router.post('/new', function(req, res, next) {
/* some code here */
db.user
.findOne({email: req.body.email})
.then(user =>{
console.log(user);
if(user){
console.log('Info: Email "'+req.body.email+'" already exists.');
res.json( {
meta:{
success: false,
message: 'Email "'+req.body.email+'" already exists.',
}
});
return; // <------
}
})
.catch(err =>{
console.log(err);
return; // <------
});
db.user.create({ /* ... */});
});
基本上我想要的是在用户已经存在时停止处理。我(认为)知道我可以在 findOne 中移动创建,但感觉不对。
router.post('/new', function(req, res, next) {
db.user
.findOne({email: req.body.email})
.then(user =>{
if(user){
console.log('Info: Email "'+req.body.email+'" already exists.');
res.json( {
meta:{
success: false,
message: 'Email "'+req.body.email+'" already exists.',
}
});
} else {
db.user.create({ /* ... */});
}
})
.catch(err =>{
console.log(err);
return; // <------ this is too
});
/* no code here */
});
谢谢
【问题讨论】:
-
使用
next()回调。 -
@marekful 它不会停止,因为我在插入时遇到重复错误。
标签: javascript node.js express sequelize.js