为什么变量显示为未定义
Why variable shows up as undefined?
我正在朋友请求数组中查询一个用户,这是有效的,但我使用userAdd进行的检查一直显示为未定义。有人知道为什么它显示为未定义吗?
这是代码:
exports.searchPost = function(req, res, err) {
User.find({$or:[
{firstName: req.body.firstName},
{lastName: req.body.lastName},
{email: req.body.email},
{phone: req.body.phone}]
}, function(err, users) {
if(err) {
return res.render('searchError', {title: 'Weblio'});
} else {
if(req.body.firstName=== '' && req.body.lastName==='' && req.body.email==='' && req.body.phone=== '') {
//maybe a diff page saying that is not a valid search page
return res.render('searchError', {title: 'Weblio'});
} else {
var userAdd;
console.log('addman');
users.forEach(function(user) {
User.findById(req.signedCookies.userid,
{friendRequest: user._id}, function() {
if(user._id === true ) {
console.log('addman1');
return userAdd = true;
} else {
console.log('addman2');
return userAdd = false;
console.log(user._id);
}
})
});
console.log(userAdd);
return res.render('searchResults', {title: 'Weblio',
usersFound: users,
userAdded: userAdd
});
}
}
});
};
它是异步的,因此需要使用回调方式来链接操作。您可以尝试一些节点模块,如async或step,以更好的语法实现它。
顺便说一句,我认为你不需要循环通过users.forEach(function(user)
。
如果你使用步骤,你可以进行
exports.searchPost = function(req, res, err) {
User.find({$or:[
{firstName: req.body.firstName},
{lastName: req.body.lastName},
{email: req.body.email},
{phone: req.body.phone}]
}, function(err, users) {
if(err) {
return res.render('searchError', {title: 'Weblio'});
} else {
if(req.body.firstName=== '' && req.body.lastName==='' && req.body.email==='' && req.body.phone=== '') {
//maybe a diff page saying that is not a valid search page
return res.render('searchError', {title: 'Weblio'});
} else {
var userAdd;
console.log('addman');
Step(
function(){
User.findById(req.signedCookies.userid, {friendRequest: user._id}, this);
},
function(err, user){
if(user !== null && user._id === true ) {
console.log('addman1');
userAdd = true;
} else {
console.log('addman2');
userAdd = false;
console.log(user._id);
}
return res.render('searchResults', {title: 'Weblio',
usersFound: users,
userAdded: userAdd
});
}
);
}
}
});
};
相关文章:
- 敲除jsobservable显示未定义的值
- 得到"未定义不是函数“;使用显示原型图案时出错
- Highcharts工具提示不显示corrosconding文本值,而是显示'未定义'
- 使用eval()定义变量显示未定义的错误
- Meteor js-控制台显示'未定义'即使返回结果
- wysihtml5命令显示为未定义
- Json显示来自网站的数据显示仅未定义
- 为什么“;未定义的“;以棱角分明的js显示
- 打字稿显示不能设置未定义的属性,如何解决
- 对象的属性显示为未定义
- JS方法显示了未定义的简单示例
- 当使用多个false时,Select2显示未定义
- AngularJS ng repeat显示原型函数未定义
- 函数在控制台中显示“未定义”
- HTML 对象在使用 ContentPlaceHolder 时在 Javascript 中显示为未定义
- 当我编写脚本时,它显示引用错误:未定义宽度
- 对象属性在控制台.log中显示为未定义
- 当我编写脚本时,它显示类型错误:menuLi[i] 未定义
- 未定义显示在选项中
- 引用错误:未定义显示