nodejs mongodb идентификатор объекта в строку

IN nodejs, с mongodb, mongoosejs в качестве 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 для строки?

 Pritam Karmakar29 дек. 2014 г., 23:42
.toString () также работал для меня, используя драйвер mongojs
 mvladk22 дек. 2016 г., 14:35
 UpTheCreek27 июн. 2013 г., 14:57
Обратите внимание, что ответы, использующие .toString (), будут работать только с mongoose, а не с любыми родными драйверами mongodb (согласно 2.2, где вы должны использовать .toHexString ()

Ответы на вопрос(10)

увидетьдок.

 willbradley13 мая 2016 г., 22:49
единственный правильный ответ, который я нашел до сих пор
 Mathias26 апр. 2019 г., 09:41
С немного большим контекстом это было бы идеальным ответом.

При использовании Mongoose единственный способ убедиться, что идентификатор в виде шестнадцатеричной строки выглядит так:

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

Это потому, что object._id существует, только если объект заполнен, если не объект является ObjectId

Попробуйте это:

user._id.toString()

MongoDB ObjectId 12-байтовый UUID может использоваться как строковое представление HEX с 24 символами в длину. Вам нужно преобразовать его в строку, чтобы показать его вconsole с помощью .console.log

Итак, вы должны сделать это:

console.log(user._id.toString());
 Ionică Bizău27 июн. 2013 г., 15:00
@UpTheCreek, нет, я использовал его только с MongoDB. Я использовал этоВот.
 Ionică Bizău27 июн. 2013 г., 15:42
 UpTheCreek27 июн. 2013 г., 15:35
Могу подтвердить, что он не работает с моим приложением, использующим mongodb2.4 и mongoskin (который использует драйвер mongo-native). Проверьте, введя (new ObjectId (). ToString ()) в оболочке Монго - вы получаете строку, но она 'не только шестнадцатеричная строка.
 UpTheCreek27 июн. 2013 г., 14:53
Обратите внимание, что это будет работать только с использованием mongoose - это не поддерживается в mongodb.
 UpTheCreek27 июн. 2013 г., 15:11
Начиная с монго 2.2 он делает что-то еще. Смотрите документы:docs.mongodb.org/manual/reference/method/ObjectId.toString  Я полагаю, вы используете более старую версию mongodb?
 Ionică Bizău27 июн. 2013 г., 15:16
Пожалуйста, проверьте это и скажите мне, если есть какие-либо ошибки.
 Ionică Bizău27 июн. 2013 г., 15:15
Нет, я использую Mongo 2.4.4, и мой проект все еще работает. Протестировал это минуту назад.

Попробуйте это вместо этого:

console.log (пользователь [0] [»_Я бы"]);

 samurai_jane07 мар. 2019 г., 12:30
Это действительно работает сfind, Потратил два часа, пытаясь найти эту информацию. Спасибо.
 JohnnyHK09 нояб. 2012 г., 01:45
Это было бы правдой, если быfind был использован, но это так.findOne

выньте подчеркивание и попробуйте снова:

console.log(user.id)

Кроме того, значение, возвращаемое из id, уже является строкой, как вы можете видетьздесь я'

Я использую это таким образом, и это работает.

ура

 writofmandamus19 янв. 2017 г., 02:34
Я просто хочу отметить, что это не работает для [email protected] '

Представление _id обычно находится в форме (получено на стороне клиента)

{ _id: { _bsontype: 'ObjectID', id: },

Как вы можете видеть тамТам буфер. Самый простой способ конвертировать это просто делать.toString() или жеString(._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") })

и .toString () работал для меня. Я'м используюводитель монгойс, Вот мой вопрос

Mongodb найти не работает с Objectid

азом.user._id.$oid

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

объект (console.log (typeof it._id)).

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

Я надеюсь, что это поможет.

Ваш ответ на вопрос