我只是想知道我做错了什么。我将数据保存到mongo:
router.route('/userAdditionalData')
//updates current user data
.put(function(req, res, next){
UserAdditionalInfo.findOne({userRef: req.body.userRef}, function(error, foundUser){
if(error){
console.log('Error in adding additional User Data: ', error);
return done(null);
};
if(foundUser){
foundUser.update(req.body, function(error, count){
res.send(200, foundUser)
});
}
else{
var addData = new UserAdditionalInfo();
addData.middleName = req.body.middleName;
addData.employer = req.body.employer;
addData.jobDescription = req.body.jobDescription;
addData.userRef = req.body.userRef;
addData.save(function(error, data){
if(error){
return res.send(500, error)
}
return res.send(200, data);
});
}
});
})
我得到的数据是这样的:
.get(function(req, res){
UserAdditionalInfo.find(function(err, data){
if(err){
return res.send(500, err);
}
return res.send(200, data);
});
});
在我的角度控制器中,当我使用$ http.get()获取数据时:
$http.get('/api/userAdditionalData').then(function(response){
console.log('response -> ', response.data[0]);
controller.userAdditionalData = response.data[0];
});
控制台完美地记录了我的响应,但是当我记录 controller.userAdditionalData 时,我得到undefined
。现在,当我在我的console.log上放置$timeout
10
时:
$timeout(function(){
console.log(controller.userAdditionalData);
}, 10);
一切正常。这意味着我的数据设置得太迟了。有什么我不做/做错的事吗?
答案 0 :(得分:1)
这是因为JavaScript中的异步范例。如果您进行异步调用并在外部创建日志,则可能会打印undefined,因为async未完成。等待带有promise或多个promise的异步调用,如果在循环中,当promise结束时,则可以记录该值或使用它。