Node.js Mongoose.jsstring到ObjectId函数

有没有一个函数,使用mongoose把一个string变成一个objectId节点? 模式指定的东西是一个ObjectId,但是当它从一个string保存,mongo告诉我,它仍然只是一个string。 对象的_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"); 

编辑:新的标准有fromHexString而不是fromString

从评论看,你正在寻找:

 mongoose.mongo.BSONPure.ObjectID.isValid 

要么

 mongoose.Types.ObjectId.isValid 

我无法解决这个方法(我承认我没有search很久)

 mongoose.mongo.BSONPure.ObjectID.fromHexString 

如果你的模式期望这个属性是ObjectIdtypes,那么转换是隐含的,至less在4.7.8中是这样的。

你可以使用这样的东西,但是,这给了更多的灵活性:

 function toObjectId(ids) { if (ids.constructor === Array) { return ids.map(mongoose.Types.ObjectId); } return mongoose.Types.ObjectId(ids); } 
 var mongoose = require('mongoose'); var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");