我正在使用 node.js promise 来验证数据库中是否存在用户名
i am using node.js promise for validating either username exist in db or not
我想检查 mongo db 中是否存在用户名我想按承诺去做,我是 node.js 的新手,请帮助我了解实际情况,谢谢。
var errorsArr = [];
var promise = username();
promise.then(function(data){
errorsArr.push({"msg":"Username already been taken."});
},console.error);
username(function(err,data){
User.findOne({"username":req.body.username},function(err,user) {
if(err)
return console.error(err);
return user;
});
});
console.log(errorsArr);
Mongoose 已经被 promified,所以这样做:
function findUser() {
return User.findOne({ "username": req.body.username })
.then(function(user) {
if (user) {
// user exists, you can throw an error if you want
throw new Error('User already exists!');
}
// user doesn't exist, all is good in your case
}, function(err) {
// handle mongoose errors here if needed
// rethrow an error so the caller knows about it
throw new Error('Some Mongoose error happened!');
// or throw err; if you want the caller to know exactly what happened
});
}
findUser().then(function() {
// user doesn't exist, do your stuff
}).catch(function(err) {
// here, you'll have Mongoose errors or 'User already exists!' error
console.log(err.message);
});
Promise 是异步的,因此只有 return Promise 和调用者会 "wait" 解决它并处理错误。
我想检查 mongo db 中是否存在用户名我想按承诺去做,我是 node.js 的新手,请帮助我了解实际情况,谢谢。
var errorsArr = [];
var promise = username();
promise.then(function(data){
errorsArr.push({"msg":"Username already been taken."});
},console.error);
username(function(err,data){
User.findOne({"username":req.body.username},function(err,user) {
if(err)
return console.error(err);
return user;
});
});
console.log(errorsArr);
Mongoose 已经被 promified,所以这样做:
function findUser() {
return User.findOne({ "username": req.body.username })
.then(function(user) {
if (user) {
// user exists, you can throw an error if you want
throw new Error('User already exists!');
}
// user doesn't exist, all is good in your case
}, function(err) {
// handle mongoose errors here if needed
// rethrow an error so the caller knows about it
throw new Error('Some Mongoose error happened!');
// or throw err; if you want the caller to know exactly what happened
});
}
findUser().then(function() {
// user doesn't exist, do your stuff
}).catch(function(err) {
// here, you'll have Mongoose errors or 'User already exists!' error
console.log(err.message);
});
Promise 是异步的,因此只有 return Promise 和调用者会 "wait" 解决它并处理错误。