读取req的问题在某些函数中未定义

时间:2017-04-23 12:08:33

标签: javascript node.js

我在第一次使用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);
                                }
                            });
                        }
                    });
                });
            }

1 个答案:

答案 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,生成器函数和其他工件来处理这种情况。