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 ?

4voto

davejoem Points 720

Lors de l'utilisation de la mangouste .

Une représentation de la _id se présente généralement sous la forme suivante (reçue côté client)

{ _id: { _bsontype: 'ObjectID', id: <Buffer 5a f1 8f 4b c7 17 0e 76 9a c0 97 aa> },

Comme vous pouvez le voir, il y a un tampon à l'intérieur. La façon la plus simple de le convertir est de faire <obj>.toString() o String(<obj>._id)

Ainsi, par exemple

var mongoose = require('mongoose')
mongoose.connect("http://localhost/test")
var personSchema = new mongoose.Schema({ name: String })
var Person = mongoose.model("Person", personSchema)
var guy = new Person({ name: "someguy" })
Person.find().then((people) =>{
  people.forEach(person => {
    console.log(typeof person._id) //outputs object
    typeof person._id == 'string'
      ? null
      : sale._id = String(sale._id)  // all _id s will be converted to strings
  })
}).catch(err=>{ console.log("errored") })

2voto

elrrrrrrr Points 14
function encodeToken(token){
    //token must be a string .
    token = typeof token == 'string' ? token : String(token)
}

User.findOne({name: 'elrrrrrrr'}, function(err, it) {
    encodeToken(it._id)
})

Dans la mangouste, l'identifiant de l'objet est un objet (console.log(typeof it._id)).

2voto

BaDr Amer Points 96

À partir de Mongoose 5.4, vous pouvez convertir ObjectId en String à l'aide des SchemaType Getters.

voir Nouveautés de Mongoose 5.4 : Configuration globale du type de schéma .

0voto

Le résultat renvoyé par find est un tableau.

Essayez plutôt ceci :

console.log(user[0]["_id"]);

0voto

Daniel Khan Points 140

Accéder à la propriété dans l'objet id comme suit user._id.$oid .

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