programing

nodejs mongodb 객체 ID에서 문자열로

powerit 2023. 3. 19. 19:31
반응형

nodejs mongodb 객체 ID에서 문자열로

노드j에서는 mongodb, mongoosej를 orm으로 한다.

나 이거 하고 있어

사용자라는 모델이 있습니다.

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

왜요? 그럼 어떻게 _id를 문자열로 만들죠?

이것을 시험해 보세요.

user._id.toString()

MongoDB ObjectId는 12바이트의 UUID로 길이 24자의 HEX 문자열 표현으로 사용할 수 있습니다.에 표시할 문자열로 변환해야 합니다.console사용.console.log.

따라서 다음과 같이 해야 합니다.

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

밑줄을 빼고 다시 시도하십시오.

console.log(user.id)

또한 id에서 반환된 값은 이미 문자열입니다.

mongoj를 사용하고 있습니다.다음 예를 들어보겠습니다.

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

이것을 시험해 보세요.

objectId.str;

의사를 참조해 주세요.

Mongoose를 사용하는 경우 ID를 16진수 문자열로 지정할 수 있는 유일한 방법은 다음과 같습니다.

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

오브젝트가 있기 때문입니다._id는 객체가 채워진 경우에만 존재하며, 채워지지 않은 객체는 ObjectId입니다.

mongoose를 사용하는 경우.

의 표현_id통상, 형식(클라이언트측)입니다.

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

보시다시피 저 안에 완충기가 있어요변환하는 가장 쉬운 방법은 다음과 같습니다.<obj>.toString()또는String(<obj>._id)

예를 들면

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

mongoose에서 objectId는 객체(console.log(type of it._id))입니다.

Mongoose 5.4부터는 SchemaType Getters를 사용하여 ObjectId를 String으로 변환할 수 있습니다.

Mongoose 5.4의 신기능: Global SchemaType Configuration을 참조하십시오.

이와 같이 개체 ID 내의 속성에 액세스합니다.user._id.$oid.

매우 간단한 사용String(user._id.$oid)

다음을 수행합니다.console.log(user._doc._id)

에 의해 반환된 결과find는 배열입니다.

대신 다음을 시도해 보십시오.

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

언급URL : https://stackoverflow.com/questions/13104690/nodejs-mongodb-object-id-to-string

반응형