how to use Promise with express in node.js?
Solution 1
Try the following, and after please read the following document https://www.promisejs.org/ to understand how the promises work.
var Promise = require('promise');
router.post('/Registration',function(req,res,next) {
function username() {
console.log("agyaaa");
return new Promise(function(resolve,reject) {
User.findOne({"username":req.body.username}, function(err,user) {
if (err) {
reject(err)
} else {
console.log("yaha b agyaaa");
var errorsArr = [];
errorsArr.push({"msg":"Username already been taken."});
resolve(errorsArr);
}
});
});
}
username().then(function(data) {
console.log(data);
next();
});
});
You can have other errors also (or things that shouldn't be done that way). I'm only showing you the basic use of a Promise.
Solution 2
router.post('/Registration', function(req, res) {
return User
.findOne({ username: req.body.username })
.then((user) => {
if (user) {
return console.log({ msg:"Username already been taken" });
}
return console.log({ msg: "Username available." });
})
.catch((err)=>{
return console.error(err);
});
});
you can write a clean code like this. Promise is a global variable available you don't need to require it.
hu7sy
I have work on different PHP frameworks(Laravel, Symfony, codeigniter, Yii) with different DB technologies like Mysql, NoSQL(MongoDB, Sphinx) and I have also worked on AngularJS, ViewJS, ReactJS, Jquery, Javascript, chrome extensions and in CMS (Wordpress, shopify).
Updated on January 18, 2020Comments
-
hu7sy over 4 years
I am using Promise with Express.
router.post('/Registration', function(req, res) { var Promise = require('promise'); var errorsArr = []; function username() { console.log("1"); return new Promise(function(resolve, reject) { User.findOne({ username: req.body.username }, function(err, user) { if(err) { reject(err) } else { console.log("2"); errorsArr.push({ msg: "Username already been taken." }); resolve(errorsArr); } }); }); } var username = username(); console.log(errorsArr); });
When I log
errorsArray
, it is empty and I don't know why. I am new in node.js. Thanks in advance.