104 votes

nodejs mongodb object id to string

IN nodejs, avec mongodb, mongoosejs comme orm

C'est ce que je fais

J'ai un modèle, l'utilisateur

User.findOne({username:'someusername'}).exec(function(err,user){
console.log(user) //this gives full object with something like {_id:234234dfdfg,username:'someusername'}
//but

console.log(user._id) //give undefined.
})

Pourquoi ? Et comment transformer l'_id en chaîne de caractères ?

170voto

Ionică Bizău Points 14484

Essayez ceci :

user._id.toString()

A ObjectId MongoDB est un UUID de 12 octets qui peut être utilisé comme représentation d'une chaîne HEX de 24 caractères. Vous devez le convertir en chaîne de caractères pour l'afficher en console en utilisant console.log .

Vous devez donc le faire :

console.log(user._id.toString());

30voto

AkerbeltZ Points 501

Retirez le trait de soulignement et réessayez :

console.log(user.id)

De plus, la valeur renvoyée par id est déjà une chaîne de caractères, comme vous pouvez le voir ici .

24voto

Mauricio Giraldo Points 231

J'utilise Mongojs, et j'ai cet exemple :

db.users.findOne({'_id': db.ObjectId(user_id)  }, function(err, user) {
   if(err == null && user != null){
      user._id.toHexString(); // I convert the objectId Using toHexString function.
   }
})

19voto

anubiskong Points 76

Essayez ceci :

objectId.str;

voir doc .

10voto

Cédric NICOLAS Points 32

Si vous utilisez Mongoose, la seule façon d'être sûr d'avoir l'id en tant que chaîne hexagonale semble être :

object._id ? object._id.toHexString():object.toHexString();

En effet, object._id n'existe que si l'objet est peuplé, sinon l'objet est un ObjectId.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X