L'Argument passé doit être une Chaîne unique de 12 octets
collection mongoDB contient les données suivantes
db.stack.find()
{ "_id" : "8GieRu" }
La _id n'est pas la seule Chaîne de 12 octets,
Comme par MongoDB document de [ObjectID][1], id (string) – Peut être un 24 octets chaîne hexadécimale, 12 octets chaîne binaire ou un Nombre.
À l'aide de la Mangouste cette collection est accessible à l'aide de cette 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
Mangouste est strictement vérification de l'ObjectId de longueur fixe, comment puis-je passer Object_id à l'aide de la mangouste avec une longueur donnée
- Remarque: ObjectId est de 12 octets, mais vous pouvez utiliser string id avec plus de 24 de la longueur en octets et non en format hexadécimal, il est facile de tester avec mongo shell db.les utilisateurs.insert({ _id : '0123454678ببیبسی9012345678900000000000000000000000000000000000000000000000005'}), je l'ai même utilisé en caractères arabe dans _id, Son OK
- Vous devriez passer ObjectID pas ObjectId, attention à la dernière "D" c'est en majuscules
Vous devez vous connecter pour publier un commentaire.
Vous mélangez les deux concepts ici.
Alors que "_id" peut avoir une valeur quelconque (même sous-document, comme
{firstName:'Foo',lastName:'Simpson'}
, "ObjectId" a un ensemble fixe de types avec quelques restrictions, comme le message d'erreur correctement.De sorte que votre déclaration doit être
J'ai eu le problème dans mon routeur de commande:
J'ai défini /emplois/karriere après /emplois/:id de l'application de la pensée que "karriere" était un ObjectID et a renvoyé l'erreur. Le code ci-dessus est le travail.
/jobs/:id
? C'est exactement la question que je vais avoir maintenant./jobs/:id
route:if (!ObjectId.isValid(id)) return res.json({ error: "Invalid Campaign Id" })
Assurez-vous que la méthode que vous utilisez à côté client et serveur match. Cette erreur s'affiche lorsque vous avez par exemple
GET
envoyé du côté client etPOST
requis sur le côté serveur.même problème pour moi, mais après un TOUR . J'ai identifié que j'ai passé de mal {Id:Undefined} donc problème s'est produit alors veuillez tout d'abord vérifier votre Id que vous avez passé dans l'URL.
Vous êtes de passage à tout
Si l'ObjectID est undfined thaen cette erreur va venir.