mangosta - mongoose bicicletas
Mangosta: compruebe si el objeto es un objeto mangosta (6)
¿Alguien sabe cuál es la forma más sencilla de verificar si un objeto es un objeto de mangosta? ¿Estoy mejor comprobando si toObject () está definido o hay una manera más eficiente? muchas gracias
Estoy usando esto
if (object.constructor.name === ''model'') {
// object is mongoose object
}
Lo siguiente para mí en el caso de verificar cuando un ObjectID es un objeto poblado o simplemente un ObjectID:
if (object._id.constructor.name === ''ObjectID'') {
// Not a populated object, only its ID
}
Mi forma preferida de determinar si un objeto es un modelo de Mangosta es casi tan simple como el anterior, pero no del todo:
function isModel(obj) {
obj = obj || {}
return obj.prototype instanceof mongoose.Model
}
En el contexto en el que uso esto, no quiero volver a estar definido, pero debo verificar que no he obtenido un "3" o algún valor extraño en el que espero un modelo.
Por supuesto, después de pensar más en esto, hay más de una manera de ser un "objeto de Mangosta". Algunas veces he confundido un DTO con un modelo de Mangosta y luego lo he usado mal más tarde, de ahí mi prueba anterior ... pero si solo necesitara verificar que algo es una instancia, pero por alguna razón no podría saber el tipo de instancia, lo haría haz algo como lo que hizo Lukasz arriba y mira la base del constructor.
Otra forma sencilla:
const isMongooseModel = (object instanceof Mongoose.Model);
Para comprobar si obj
es un objeto Mongoose, use este fragmento de código:
const _ = require(''lodash'');
const mongoose = require(''mongoose'');
function checkIfMongooseObject(obj) {
return _.get(obj, ''constructor.base'') instanceof mongoose.Mongoose;
}
Al contrario de las otras soluciones provistas, esta es segura: nunca fallará independientemente del tipo de objeto (ya sea incluso String o Int).
Puede verificar el prototipo del objeto a través del operador instanceof
para confirmar que es una instancia de su modelo de mangosta. Usando el esquema de ejemplo de mongoosejs.com :
if (obj instanceof Cat) {
// yes, it''s a mongoose Cat model object
...
}