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
InformationsquelleAutor anish | 2014-10-19