Soy totalmente novato en node/express/mongo. Estoy tratando de aprender, pero un solo error está terminando mi día. No sé por qué. Lo busqué mucho en Google y todavía no puedo encontrar ninguna solución adecuada. El siguiente es mi código de pastebin donde puede encontrar mi código.
Tengo el siguiente error todo el tiempo, aunque obtengo el parámetro de identificación de la URL usando objectID para mongo. ¿Puedes ayudarme aquí?...
Error: Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters at new ObjectID (c:\Users\AD LORD\Desktop\learning-node\node_modules\bson\lib\bson\objectid.js:50:11) at ObjectID (c:\Users\AD LORD\Desktop\learning-node\node_modules\bson\lib\bson\objectid.js:31:42) at app.get (c:\Users\AD LORD\Desktop\learning-node\server.js:35:44) at Layer.handle [as handle_request] (c:\Users\AD LORD\Desktop\learning-node\node_modules\express\lib\router\layer.js:95:5) at next (c:\Users\AD LORD\Desktop\learning-node\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (c:\Users\AD LORD\Desktop\learning-node\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (c:\Users\AD LORD\Desktop\learning-node\node_modules\express\lib\router\layer.js:95:5) at c:\Users\AD LORD\Desktop\learning-node\node_modules\express\lib\router\index.js:281:22 at param (c:\Users\AD LORD\Desktop\learning-node\node_modules\express\lib\router\index.js:354:14) at param (c:\Users\AD LORD\Desktop\learning-node\node_modules\express\lib\router\index.js:365:14)Como no obtuve ninguna respuesta, de alguna manera logré resolver el problema. Parece que mi parámetro no se configuró correctamente por lo que se produjo el error, así que actualicé mi ruta como la siguiente:
// update quote app.post( '/update/edits', ( req, res ) => { db.collection('quote').update ( { _id: ObjectId(req.body.quoteID) }, { $set: { name: req.body.name, quote: req.body.quote } }, function (err, result) { if (err) { req.flash('error', err); } else { req.flash('success', 'Quote updated successfully'); } res.redirect('/'); }); });Por cierto, puede verificar el sistema CRUD terminado en mi github si ayuda a algún otro.
Puedes hacerlo así:
var mongoose = require('mongoose'); var id = mongoose.Types.ObjectId(req.body.quoteID); primero verifique que su req.body.quoteID sea una identificación válida o no