我是nodejs的新手,我想创建帮助函数来从集合中查找用户。我想在将任何新文档添加到数据库之前执行该辅助函数。 Parallaly我想在其他地方多次使用该辅助函数。
当我只创建一个函数并存储该函数的结果时,控件从该位置传递,并且不会等待输出作为Nodejs基本的异步功能。
如何自定义代码以使用辅助函数并等待结果然后执行所需的操作
如何使用嵌套回调? 嵌套回调不等待回调数据,控制转到下一行
这是我的代码:
login: function (req, res) {
var user = helpers.checkIfDataExists(req.body.mobileNumber, function (user) {
if (user) {
console.log('user exists');
var email = helpers.checkIfDataExists(req.body.email, function (email) {
if (email) {
console.log('email exists');
} else {
console.log('email not exists');
}
});
} else {
console.log('user not exists')
}
});
}
我希望控件等到执行函数然后执行条件。 这里默认情况下每次都在其他部分进行控制。
这是辅助函数的代码:
checkIfDataExists: function (value, callback) {
User.find({mobileNumber: value})
.exec(function (err, result) {
if (err) {
console.log('Error occured');
callback(false);
} else {
console.log('result found');
callback(result);
}
});
},
答案 0 :(得分:0)
使用回调。将回调函数传递给将返回结果的辅助函数,然后在辅助函数中,在计算结束时写入对该函数的调用。
checkIfDataExists: function (value, callback) {
User.find({mobileNumber: value})
.exec(function (err, result) {
if (err) {
console.log('Error occured');
callback(false);
} else if (!result) {
console.log('Not Found');
callback(false);
} else {
console.log('result found');
callback(result);
}
});
},
然后在你的主要功能中使用这样的东西。
signUp: function (req, res) {
var user = helpers.checkIfDataExists(req.body.mobileNumber, function(user){
// do something with results here
log(user);
if (!user) {
// add new user
} else {
res.send("User exists");
}
});
}
这是指向article有关回调的链接