req.session.id与req.session._id不同

我想明白为什么这样:

req.session._id = doc._id; req.session.id = doc._id; console.log(typeof req.session._id); // object console.log(typeof req.session.id); // string console.log(req.session._id); // 4oqTbA06DcK9cIiU3tnK62Ic.0puZ9uPnIaghMBIQKaIbhIHYzeP8wtS3MXnzpi+yC1c console.log(req.session.id); // 4fb01ad2ca42e9552d000001 

所以,当我想要这样做:

 var myID = req.session._id, myIDm = new BSON.ObjectID(myID); // don't bug var myID = req.session.id, myIDm = new BSON.ObjectID(myID); // bug: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters 

感谢您告诉我关于此的所有信息!

问题是, _id是由mongodb自动生成的,并且可以传递给BSON.ObjectID() ObjectIDtypes,并获得具有相同ID的新ObjectIdid属性不是由mongodbpipe理的,如果你把这个值BSON.ObjectID()构造函数,会引发错误。 期望的string必须是12字节或长度为24的hex编码二进制(允许的字符是af,AF,0-9)。 希望这可以帮助。