Cadena de Mongoose.js de Node.js a la función ObjectId

¿Hay una función para convertir una cadena en un objeto Id en el nodo usando mongoose? El esquema especifica que algo es un ObjectId, pero cuando se guarda de una cadena, mongo me dice que todavía es solo una cadena. El _id del objeto, por ejemplo, se muestra como objectId("blah") .

Puedes hacerlo así:

 var mongoose = require('mongoose'); var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003'); 

Puedes hacerlo así:

 var mongoose = require('mongoose'); var _id = mongoose.mongo.BSONPure.ObjectID.fromHexString("4eb6e7e7e9b7f4194e000001"); 

EDITAR: El nuevo estándar tiene fromHexString en lugar de fromString

A juzgar por los comentarios, que está buscando:

 mongoose.mongo.BSONPure.ObjectID.isValid 

O

 mongoose.Types.ObjectId.isValid 
 var mongoose = require('mongoose'); var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001"); 

No pude resolver este método (reconozco que no busqué por mucho tiempo)

 mongoose.mongo.BSONPure.ObjectID.fromHexString 

Si su esquema espera que la propiedad sea de tipo ObjectId, la conversión es implícita, al menos este parece ser el caso en 4.7.8.

Sin embargo, podrías usar algo como esto, que da un poco más de flexibilidad:

 function toObjectId(ids) { if (ids.constructor === Array) { return ids.map(mongoose.Types.ObjectId); } return mongoose.Types.ObjectId(ids); }