开发者问题收集

TypeError:无法读取未定义 node.js 的属性“length”

2017-11-29
6755

我正在尝试将多个数据插入 mongoDB。数据来自另一个 JSON 格式的 Web 服务。我收集该数据并将其存储在我的数据库中。但是,当我尝试迭代收集的项目时,我得到了问题中提到的类型错误。

// Add purchase details to DB (Userid, Productid, Category)
router.post('/addpurchased', function(req, res){
    // Connect to the server
    MongoClient.connect(url, function(err, db){
      if (err) {
        console.log('Unable to connect to the Server:', err);
      } else {
        console.log('Connected to Server',url);


    // Get the documents collection
    var collection = db.collection('purchased');

    var arrProducts = req.body.products;
    var userProducts = [];

    for(var i = 0; i < arrProducts.length; i++){
      // Get the purchased details passed from the form
      var user = {userid: arrProducts[i].userid, productid: arrProducts[i].productid, category: arrProducts[i].category,
         purchasetime: new Date()};

      userProducts.push(user);
    }

    // Insert the purchase data into the database
    collection.insert(userProducts, function (err, result){
      if (err) {
        console.log(err);
      } else {
        res.send("Purchase Details Added")
      }
    });
  }
});

});

请告诉我我在这里遗漏了什么。

我正在从邮递员传递 JSOM 数据,如下所示, 在此处输入图像描述

并收到以下错误消息。 在此处输入图片描述

3个回答

正如其他人在评论中提到的,您的 req.body.products 传入的是 null。这将修复您的错误,但随后您需要弄清楚为什么没有获得产品。

 var arrProducts = [];
  if(req && req.body && req.body.products){
   var arrProducts = req.body.products;
  }

  for(var i = 0; i < arrProducts.length; i++){
  // Get the purchased details passed from the form
  var user = {userid: arrProducts[i].userid, productid: arrProducts[i].productid, category: arrProducts[i].category,
     purchasetime: new Date()};

  userProducts.push(user);
}

您可以通过打印出 body 的内容进行调试或

console.log(req.body);
camccar
2017-11-29

您在 Postman 中的 JSON 格式错误。 在 JSON 格式中使用引号,因为请求要求它是字符串。

如果您要在 Javascript XHR 请求中使用它,则需要在将请求发送到服务器之前使用 JSON.stringify(object)。

{ 
"products": [
       {
        "productid" : "first",
        "userid" : "1",
        "category": "edu"
       },
       {
        "productid" : "second",
        "userid" : "2",
        "category": "edu"
       }
]
}
Anuj2512
2017-11-29

感谢你的提示。我之前没有正确传递 JSON 数据。现在它工作正常了。

Sbk3824
2017-11-29