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");