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")
}
});
}
});
});
请告诉我我在这里遗漏了什么。
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