在Heroku上使用MEAN Stack部署我能夠使用mongoDB的findOne
和deleteOne
函數GET
和DELETE
函數。然而,當我嘗試PUT
文檔與MongoDB的updateOne
/update
功能,收到這個錯誤(服務器端):MongoDB objectID陌生人錯誤
的_id字段不能從改變{_id:的ObjectId( '56d4d71191fdc81100974d0b')}至{ _id:「56d4d71191fdc81100974d0b」}。
似乎有些奇怪,因爲我使用在updateOne
我的服務器代碼相同的方法在findOne
(再次,findOne
正常工作):
app.get("/contacts/:id", function(req, res) {
db.collection(CONTACTS_COLLECTION).findOne({ _id: new ObjectID(req.params.id) }, function(err, doc) {
if (err) {
handleError(err.message, "Failed to get contact");
} else {
res.status(200).json(doc);
}
});
});
app.put("/contacts/:id", function(req, res) {
var updateDoc = req.body;
db.collection(CONTACTS_COLLECTION).updateOne({_id: new ObjectID(req.params.id)}, updateDoc, function(err, doc) {
if (err) {
handleError(err.message, "Failed to update contact");
} else {
res.status(204).end();
}
});
});
有什麼建議?
你正在做的更新和更新的文檔包含一個_id,蒙戈不喜歡這一點。從updateDoc中刪除_id:'delete updateDoc._jd'。 – Shanoor