2012-05-31 204 views

回答

23

您可以通過instanceof運算符檢查對象的原型,以確認它是貓鼬模型的一個實例。從mongoosejs.com使用示例模式:

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

不錯!例如this.message =對象instanceof消息? object:new Message(object); – charneykaye

14

我使用這個

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

這一個工作,上面的答案在JSLint – Enkode

+0

失敗'模型'是一個非常通用的名稱。 –

0

在檢查的情況下,對我來說,follwing當一個對象ID是一個人口稠密的對象或只是一個對象ID:

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

要檢查是否obj是貓鼬的對象,使用此片段:

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

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

與其他提供的解決方案相反,這是安全的 - 它永遠不會失敗,無論類型爲obj(甚至是String或Int)。