我有这个express.js route
app.get("/explore/:category?", checkCategory, function(req, res){
var params = new Array();
params["path"] = req.route.path;
Category.findOne({hash:category}, function (err, doc) {
params["category"] = doc;
});
console.log(params);
当你在findOne中时,doc值和params [“category”]值都很好。然而,在该范围之外,它消失了,并且params [“category”]变得“未定义”。现在刷新页面一次后,它恢复正常行为,并且在节点运行的其余部分中似乎保持这种状态。
为什么会出现这种情况?
答案 0 :(得分:2)
这是因为在传递给findOne的回调之前调用了console.log。如果你改变它,它会按预期工作:
Category.findOne({hash:category}, function (err, doc) {
params["category"] = doc;
console.log(params);
});
另外,请参阅this one等类似问题的答案。