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.log
在console
显示它。
所以,你必须这样做:
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