2017-04-23 62 views
0

我在第一次使用req.user時獲取用戶查詢信息,但是在第二個函數裏我得到了無法讀取null的屬性用戶。讀取請求的問題請求在某些函數內部undefined

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

您在內部函數中有req,它會覆蓋與用戶的outter req。你可以在外面建立一個變種與用戶:

例子:

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 
    }); 
}); 

在我看來你的代碼就是我們所說的回調地獄,因此建議重構它使用控制流,你可以使用的承諾,生成器函數和其他工件。