la collection mongoDB contient les données suivantes
db.stack.find()
{ "_id" : "8GieRu" }
Le _id n'est pas une chaîne unique de 12 octets,
Selon le document MongoDB de [ObjectID] [1], id (chaîne) - Peut être une chaîne hexagonale de 24 octets, une chaîne binaire de 12 octets ou un nombre.
En utilisant Mongoose cette collection est accédée en utilisant ce Json
{"_id" : new mongoose.Types.ObjectId("8GieRu")}
et jette l'erreur ci-dessous
/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js:35
throw new Error("Argument passed in must be a single String of 12 bytes or
^
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
at new ObjectID (/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js:35:11)
[1]: http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html
Mongoose vérifie strictement l'ObjectId de longueur fixe, comment puis-je passer Object_id en utilisant mangouste avec la longueur donnée
Vous mélangez deux concepts ici.
Bien que "_id" puisse avoir n'importe quelle valeur (même un sous-document tel que {firstName:'Foo',lastName:'Simpson'}
, "ObjectId" a un ensemble fixe de types avec certaines restrictions, comme l'indique correctement le message d'erreur.
Donc, votre déclaration devrait être
{'_id':'putWhatEverYouWantHere'}
J'ai eu le problème dans ma commande de routeur:
app.get('/jobs', controllers.jobs.getAllJobs);
app.get('/jobs/karriere', controllers.jobs.getAllJobsXML);
app.get('/jobs/:id', controllers.jobs.getJob);
app.get('/jobs/:id/xml', controllers.jobs.getJobXML);
J'ai défini/jobs/karriere after / jobs /: id si l'application a pensé que "karriere" était un ObjectID et a renvoyé l'erreur. Le code ci-dessus est celui qui fonctionne.
Assurez-vous que la méthode que vous utilisez dans les correspondances côté client et côté serveur. Cette erreur indique également lorsque vous avez par exemple GET
étant envoyé du côté client et POST
requis du côté serveur.
même problème rencontré par moi mais après un RND. J'ai identifié que j'avais mal passé {Id: Undefined}, donc un problème est survenu, veuillez donc d'abord vérifier votre identifiant que vous avez transmis dans une URL.
Error = "http://localhost:4000/api/deleteBook/Undefined"
Right = "http://localhost:4000/api/deleteBook/5bb9e79df82c0151fc0cd5c8"