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

問題は、_idmongodbによって自動生成され、ObjectIDに渡すことができるタイプであり、同じIDでBSON.ObjectID()新しいものを取得することです。ObjectIdこのid属性はmongodbによって管理されていないため、この値をBSON.ObjectID()コンストラクターに設定すると、エラーが発生します。予想される文字列は、12バイトまたは長さ24の16進エンコードされたバイナリである必要があります(許可される文字はaf、AF、0〜9です)。お役に立てれば。

于 2012-05-14T00:16:15.427 に答える