我想检查用户名是否存在。 我必须同步运行它。
function notExisted(string) {
var username = '';
//STEP 1: check if any user is existed with the givven username, and asign a value to username var.
User.findOne({'username': string}, function (err, result) {
if (err) {
req.flash('error', 'An error occured.');
res.redirect("back");
} else {
if (!result === null) {
username = result.username;
} else {
username = null;
}
}
});
// STEP 2: based on username varibale return false(if founded) or true(if not founded)
// if any user has founded, the username variable would be the username. Otherwise it would be null.
if (username === null) {
return true;
} else {
return false;
}
}
如您所见,第1步和第2步应该一个接一个地运行。 你知道如何通过async库或更好的方法同步运行这2个步骤吗? 提前致谢。
答案 0 :(得分:1)
使用下面的代码,我还没有测试过,但这是使用async模块进行瀑布的方法: -
let async = require('async');
async.waterfall([
function(callback) {
User.findOne({'username': string}, function (err, result) {
if (err) {
callback( true, null);
} else {
if (!result === null) {
username = result.username;
} else {
username = null;
}
callback( null, username);
}
});
},
function (username, callback) {
if (username === null) {
callback( null, true)
} else {
callback( null, false)
}
}
], function (err, result) {
if (err) {
req.flash('error', 'An error occured.');
res.redirect("back");
} else {
console.log(result);// gives you true / false
}
})