抛出该错误时,我试图将记录插入到集合中。我浏览了insertOne上的mongodb文档,并且我了解到mongod在未按我的情况指定时会自动添加_id,因此我想知道为什么会有未定义的id错误。
这是我正在使用的代码,首先是api路由和我要插入的数据
app.post('/api/contacts', (req, res) => {
// retrieve the user being added in the body of the request
const user = req.body;
// obtain a reference to the contacts collection
const contactsCollection = database.collection('contacts');
// insert data into the collection
contactsCollection.insertOne(user, (err, r) => {
if (err) {
return res.status(500).json({error: 'Error inserting new record.'});
}
const newRecord = r.ops[0];
return res.status(201).json(newRecord);
});
});
要插入的json数据
{
"name": "Wes Harris",
"address": "289 Porter Crossing, Silver Spring, MD 20918",
"phone": "(862) 149-8084",
"photoUrl": "/profiles/wes-harris.jpg"
}
数据库成功连接到mlab上托管的数据库,没有错误。这里可能有什么问题,我该如何解决该错误?
答案 0 :(得分:2)
该错误消息表示您要传递给insertOne的对象是未定义的(因此它无法读取其_id属性)。您可能想看看req.body到底包含什么,因为它是作为用户传递的。 (我不知道TypeScript,但是在节点/表达式中,当我没有正确设置bodyParser时遇到了这样的错误)
答案 1 :(得分:0)
遇到类似问题。通过使用body-parser进行解决,然后解析发送的json对象,如下所示:
const bodyParser = require('body-parser');
app.use(bodyParser.json());
// parse application/json
app.use(function (req, res) {
res.setHeader('Content-Type', 'text/plain')
res.write('you posted:\n')
res.end(JSON.stringify(req.body, null, 2))
})