oid new long bsonid node.js mongodb mongoose

node.js - new - mongodb objectid to string



nodejs mongodb object id to string (10)

IN nodejs, con mongodb, mongoosejs como orm

yo estoy haciendo esto

Tengo un modelo, usuario

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. })

¿Por qué? ¿Y cómo llevar el _id a la cadena?


Acceda a la propiedad dentro de la id del objeto como ese user._id.$oid .


Cuando se usa mangosta.

Una representación del _id generalmente está en la forma (lado del cliente recibido)

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

Como pueden ver, hay un buffer ahí. La forma más sencilla de convertirlo es haciendo <obj>.toString() o String(<obj>._id)

Así por ejemplo

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") })


El resultado devuelto por find es una matriz.

Pruebe esto en su lugar:

console.log (usuario [0] ["_ id"]);



Estoy usando mongojs, y tengo este ejemplo:

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. } })

Espero esta ayuda.


Prueba esto:

user._id.toString()

Un ObjectId MongoDB es un UUID de 12 bytes que se puede utilizar como una representación de cadena HEX con 24 caracteres de longitud. Necesita convertirlo a una cadena para mostrarlo en la console usando console.log .

Entonces, tienes que hacer esto:

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


Si usa Mongoose, la única forma de asegurarse de tener el ID como un hexágono de cadena parece ser:

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

Esto se debe a que object._id existe solo si el objeto está lleno, si no el objeto es un ObjectId




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) })

En mangosta, el objectId es un objeto (console.log (typeof it._id)).