我需要一些幫助來清除一些事情。Mongoose - Modle.update()更新錯誤的文檔 - Cast Error
我有一個模型:
var Event = new Schema({
event_code: String
, segments: [Segment]
});
的新文檔的創建工作得非常好喜歡完美。當涉及到更新某些文件時,我遇到了一些麻煩。
當我這樣做(下面的代碼): =它只更新的第一個文檔,即使id不符合
function edit_event (id, new_name, callback) {
Event.update(id, {$set:{event_code: new_name}}, function(err, doc) {
if (err) throw err;
callback();
});
}
當我(下面的代碼)做到這一點: =它給我一個錯誤(見下文)
function edit_event (id, new_name, callback) {
Event.findByIdAndUpdate(id, {$set:{event_code: new_name}}, function(err, doc) {
if (err) throw err;
callback();
});
}
錯誤使用findByIdAndUpdate時:Cast to ObjectId failed for value ""58fdbde31bff83141b376508"" at path "_id" for model "Event"
拜託,我很絕望:! :/
UPDATE
我想通了,我試圖通過獲取存儲與「」周圍,所以當我在尋找文件相匹配的ID標識它把一個額外的對「」 圍繞它,所以它最終像 「」 ID 「」
更新2
當我列出我的所有文件,它返回:
{ _id: 58fdbde31bff83141b376508,
event_code: 'TestABC',
__v: 0,
segments: [] }
然後,當我將這個id存儲在一個HTML表單中時,它在它周圍增加了一對「...」,這與event_code不一樣。這是爲什麼 ?
檢查您是否通過爲「ID」,當你調用函數edit_event,應該字符串正確參數中。 –
當您使用find()時,您應該指定參數爲{_id:id} ... id由您提供。您需要指定要匹配的密鑰。 –
我傳遞的確實是一個字符串的id。的console.log(ID);在上面的例子給我58fdbde31bff83141b376508 ...但是我也試圖'{_id:id}'=導致相同的錯誤 –