nodejs mongodb对象id到string

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

为什么? 如何获得_idstring呢?

尝试这个:

 user._id.toString() 

MongoDB ObjectId是一个12字节的UUID,可以用作HEXstring表示,长度为24个字符。 您需要将其转换为string以使用console.logconsole显示它。

所以,你必须这样做:

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

拿下划线再试一次:

 console.log(user.id) 

此外,从ID返回的值已经是一个string,你可以在这里看到https://github.com/LearnBoost/mongoose/issues/548#issuecomment-2245903

我用这种方式,它的工作原理。

干杯

我正在使用mongojs,我有这个例子:

 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;

请参阅文档: http : //docs.mongodb.org/manual/reference/object-id/

如果你正在使用Mongoose,唯一的方法就是确保id是一个hexstring,好像是:

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

这是因为object._id仅在对象被填充时存在,否则对象是ObjectId

user._id.$oid那样访问对象id中的属性。

find返回的结果是一个数组。

试试这个:

的console.log(用户[0] [ “_ ID”]);

 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(typeof it._id))。

我面临同样的问题,.toString()为我工作。 我正在使用mongojs驱动程序https://github.com/mafintosh/mongojs 。 这是我的问题

Mongodb找不到Objectid