我在第一次使用req.user时获取用户查询信息但在第二次内部函数中我得不到null的属性用户。
router.post("/orders", function (req, res) {
console.log(req.user);//here I can see user info!
orders.count({
customerInfo: req.user//here I can get user info!
}, function (req, count) {
if (count > 0) {
console.log(count);
orders.findOne({
customerInfo: req.user//here:cannot read property user of null
}, function (err, orders) {
products.findOne({
_id: req.body.id
}, function (err, products) {
if (err) {
console.log(err);
} else {
orders.productInfo.push(products);
orders.save(function (err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
}
});
}
});
});
}
答案 0 :(得分:0)
您需要内部函数,并且它会覆盖用户的outter req。您可以在用户外部创建var:
示例:
post("/orders", function (req, res) {
const user = req.user;
orders.count({ customerInfo: user//here I can get user info!
}, function (req, count) {
//Here you can use user
});
});
在我看来,你的代码就是我们所说的回调地狱,所以建议使用控制流重构它,你可以使用promises,生成器函数和其他工件来处理这种情况。