Ich brauche etwas Hilfe, um einige Dinge zu klären.Mongoose - Modle.update() aktualisiert falsches Dokument - Cast Error
Ich habe ein Modell:
var Event = new Schema({
event_code: String
, segments: [Segment]
});
Die Schaffung neuer Dokumente arbeiten sehr gut wie perfekt. Wenn es darum ging, bestimmte Dokumente zu aktualisieren, stieß ich auf einige Probleme.
Als ich diesen (Code unten) tun: = es aktualisiert nur das erste Dokument, auch wenn die ID nicht
function edit_event (id, new_name, callback) {
Event.update(id, {$set:{event_code: new_name}}, function(err, doc) {
if (err) throw err;
callback();
});
}
überein Wenn ich diesen (Code unten) tun: = it gibt mir einen Fehler (siehe unten)
function edit_event (id, new_name, callback) {
Event.findByIdAndUpdate(id, {$set:{event_code: new_name}}, function(err, doc) {
if (err) throw err;
callback();
});
}
Fehler beim findByIdAndUpdate mit:Cast to ObjectId failed for value ""58fdbde31bff83141b376508"" at path "_id" for model "Event"
Bitte, ich bin verzweifelt:! :/
UPDATE
ich, dass die ID herausgefunden, dass ich mit „“ um es zu bekommen gespeichert passieren bin versucht, so, wenn ich ID es setzt ein zusätzliches Paar mit passender für Dokument suchen "" um es so endet es wie oben "" id ""
UPDATE 2
Wenn ich alle meine Dokumente bin Listing, gibt sie:
{ _id: 58fdbde31bff83141b376508,
event_code: 'TestABC',
__v: 0,
segments: [] }
Dann, wenn ich die ID in einem HTML-Formular speichern, fügt es zusätzliche Paar von "" um es herum ... das ist nicht der Fall mit event_code. Warum das ?
prüfen, ob Sie mit der rechten Paramter für „id“, wenn Sie Funktion edit_event sind vorbei fordern, sollte es String sein. –
Wenn Sie mit find() arbeiten, sollten Sie den Parameter als {_id: id} ... id angeben. Sie müssen den Schlüssel angeben, für den Sie eine Übereinstimmung wünschen. –
Ich übergebe die ID als String. console.log (id); im obigen Beispiel gibt mir 58fdbde31bff83141b376508 ... aber ich habe auch versucht zu '{_id: id}' = was zu dem gleichen Fehler –