IN nodejs,mongodb,mongoosejs as 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变为字符串呢?
答案 0 :(得分:70)
试试这个:
user._id.toString()
MongoDB ObjectId 是一个12字节的UUID,可以用作HEX字符串表示,长度为24个字符。您需要将其转换为字符串,以便使用console
在console.log
中显示它。
所以,你必须这样做:
console.log(user._id.toString());
答案 1 :(得分:15)
答案 2 :(得分:15)
我正在使用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.
}
})
我希望这有帮助。
答案 3 :(得分:13)
试试这个: objectId.str;
请参阅doc。
答案 4 :(得分:6)
如果您使用的是Mongoose,那么确保将id作为十六进制字符串的唯一方法似乎是:
object._id ? object._id.toHexString():object.toHexString();
这是因为object._id仅在填充对象时存在,否则对象是ObjectId
答案 5 :(得分:1)
find返回的结果是一个数组。
请改为尝试:
的console.log(用户[0] [ “_ ID”]);
答案 6 :(得分:1)
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))。
答案 7 :(得分:1)
我遇到了同样的问题,.toString()为我工作。我正在使用mongojs driver。这是我的问题
答案 8 :(得分:1)
使用猫鼬时。
_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") })
答案 9 :(得分:1)
有两种方法可以做到这一点:
user._id
代替使用user.id
,它将为您返回一个字符串user._id.toString()
答案 10 :(得分:0)
访问对象ID中的属性,如user._id.$oid
。