【发布时间】:2018-07-06 17:20:53
【问题描述】:
我正在发布价值,但我得到的是空数组。我知道它的节点异步问题。但我不知道我该如何解决这个问题。我参考了以下链接:
How do I return the response from an asynchronous call?
但我无法理解。请帮助我理解 Promise 以及如何在我的代码中使用它。
router.post('/inspection_list', function (req, res) {
var id = req.body.project_id;
console.log(id)
// res.send("ok")
db.inspection.findOne({'_id':id},(err,response)=>{
if(err){
console.log("error");
}
else{
console.log("Data")
var inspection = [];
var data = response.inspection_data;
var f = data.map(function (item) {
var fielduser = item.fielduser_id
db.fielduser.findOne({'_id': mongoose.Types.ObjectId(fielduser)},(err,user)=>{
console.log(user.owner_name);
console.log(item.inspection_name)
inspection.push({inspection_name:item.inspection_name,field_user_name : user.owner_name})
})
});
console.log(inspection) // Here am getting empty value
// setTimeout(function(){ console.log(inspection) }, 5000); my timeout code
}
})
});
【问题讨论】:
-
你在
var data中得到值吗? -
console.log(user.owner_name);和console.log(item.inspection_name)的输出是什么? -
你正在获取用户名和检查名称。如果我为 console.log 设置超时功能,我会得到值
-
不设置timeout怎么样?你能把超时代码sn-p也贴出来吗?
-
是的,这就是为什么我说这是异步问题
标签: node.js mongodb asynchronous