2012-05-31 16 views
16

qualcuno sa qual è il modo più semplice per verificare se un oggetto è un oggetto mangusta? Sto semplicemente controllando se toObject() è definito o esiste un modo più efficiente. molte grazieMangusta: controlla se l'oggetto è manauna

risposta

23

È possibile controllare il prototipo dell'oggetto tramite l'operatore instanceof per confermare che si tratta di un'istanza del modello di mangusta. Utilizzando lo schema di esempio dalla mongoosejs.com:

if (obj instanceof Cat) { 
    // yes, it's a mongoose Cat model object 
    ... 
} 
+0

Bello! per esempio. this.message = object instanceof Message? oggetto: nuovo messaggio (oggetto); – charneykaye

14

Sto usando questo

if (object.constructor.name === 'model') { 
    // object is mongoose object 
} 
+0

Questo ha funzionato, la risposta di cui sopra non riesce in JSLint – Enkode

+0

'modello' è un nome molto generico. –

0

Il follwing per me nel caso di controllo quando un ObjectID è un oggetto popolato o semplicemente un ObjectID:

if (object._id.constructor.name === 'ObjectID') { 
    // Not a populated object, only its ID 
} 
0

Per verificare se obj è un oggetto Mongoose, utilizzare questo frammento:

const _ = require('lodash'); 
const mongoose = require('mongoose'); 

function checkIfMongooseObject(obj) { 
    return _.get(charger, 'constructor.base') instanceof mongoose.Mongoose; 
} 

Contrariamente ad altre soluzioni fornite, questo è sicuro - non fallirà mai a prescindere dal tipo di obj (che sia anche String o Int).