Mongooseを使用してノード内の文字列をobjectIdに変換する関数はありますか?スキーマは何かがObjectIdであることを指定しますが、文字列から保存されると、mongoはそれが単なる文字列であることを教えてくれます。たとえば、オブジェクトの_idはobjectId("blah")
として表示されます。
次のようにできます:
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');
次のようにできます:
var mongoose = require('mongoose');
var _id = mongoose.mongo.BSONPure.ObjectID.fromHexString("4eb6e7e7e9b7f4194e000001");
編集:新しい標準にはfromStringではなくfromHexStringがあります
var mongoose = require('mongoose');
var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");
コメントから判断すると、あなたは探しています:
mongoose.mongo.BSONPure.ObjectID.isValid
または
mongoose.Types.ObjectId.isValid
私はこの方法を解決できませんでした(確かに長い間検索しませんでした)
mongoose.mongo.BSONPure.ObjectID.fromHexString
スキーマがプロパティがObjectId型であると予期している場合、変換は暗黙的です。少なくとも4.7.8の場合はそうです。
ただし、次のようなものを使用できます。これにより、もう少し柔軟になります。
function toObjectId(ids) {
if (ids.constructor === Array) {
return ids.map(mongoose.Types.ObjectId);
}
return mongoose.Types.ObjectId(ids);
}