Necesito ayuda para aclarar algunas cosas.
Tengo un modelo:
var Event = new Schema({ event_code: String , segments: [Segment] });La creación de nuevos documentos funciona muy bien como perfecto. Cuando se trata de actualizar ciertos documentos, me encontré con algunos problemas.
Cuando hago esto (código a continuación): = solo actualiza el primer documento, incluso si la identificación no coincide
function edit_event (id, new_name, callback) { Event.update(id, {$set:{event_code: new_name}}, function(err, doc) { if (err) throw err; callback(); }); }Cuando hago esto (código a continuación): = me da un error (ver a continuación)
function edit_event (id, new_name, callback) { Event.findByIdAndUpdate(id, {$set:{event_code: new_name}}, function(err, doc) { if (err) throw err; callback(); }); } Error al usar findByIdAndUpdate: la conversión Cast to ObjectId failed for value ""58fdbde31bff83141b376508"" at path "_id" for model "Event"
Por favor, estoy desesperada :! :/
ACTUALIZAR
Descubrí que la identificación que estoy tratando de pasar se almacena con "" a su alrededor, por lo que cuando busco un documento con una identificación coincidente, se coloca un par adicional de "" alrededor, por lo que termina como ""id" "
ACTUALIZAR 2
Cuando estoy enumerando todos mis documentos, devuelve:
{ _id: 58fdbde31bff83141b376508, event_code: 'TestABC', __v: 0, segments: [] }Luego, cuando almaceno la identificación en un formulario HTML, agrega un par adicional de "" a su alrededor ... ese no es el caso con event_code. Porqué es eso ?
Parece que realizó JSON.stringify innecesario y es por eso que obtiene comillas alrededor de la id . Llamar JSON.parse debería resolver el problema:
Event.findByIdAndUpdate(JSON.parse(id), {$set:{event_code: new_name}}, ...