2

我想了解为什么会这样:

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

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

4

1 回答 1

1

问题是,_id它是由 mongodb 自动生成的,并且是ObjectID可以传递给的类型,BSON.ObjectID()并且你会得到ObjectId具有相同 id 的新的。该id属性不由 mongodb 管理,如果将此值放入BSON.ObjectID()构造函数,则会引发错误。预期的字符串必须是 12 字节或长度为 24 的十六进制编码二进制(允许的字符是 af、AF、0-9)。希望这可以帮助。

于 2012-05-14T00:16:15.427 回答