猫鼬:检查对象是否是猫鼬对象

Chi*_*hin 26 mongoose

有谁知道检查对象是否是猫鼬对象的最简单方法是什么?我只是最好检查是否定义了toObject()或是否有更有效的方法.非常感谢

Joh*_*yHK 32

您可以通过instanceof操作员检查对象的原型,以确认它是您的猫鼬模型的实例.使用mongoosejs.com中的示例模​​式:

if (obj instanceof Cat) {
    // yes, it's a mongoose Cat model object
    ...
}
Run Code Online (Sandbox Code Playgroud)


mis*_*may 16

我正在使用它

if (object.constructor.name === 'model') {
  // object is mongoose object
}
Run Code Online (Sandbox Code Playgroud)

  • “模型”是一个非常通用的名称。 (2认同)

Ton*_*5TM 7

我确定一个对象是否是 Mongoose 模型的首选方法几乎和上面一样简单,但不完全是:

function isModel(obj) {
    obj = obj || {}
    return obj.prototype instanceof mongoose.Model
}
Run Code Online (Sandbox Code Playgroud)

在我使用它的上下文中,我不想得到未定义的返回值,但确实需要验证我没有得到“3”或我期望模型的一些奇怪的值。

当然,在进一步考虑之后,有不止一种方法可以成为“猫鼬对象”。我有时将 DTO 误认为 Mongoose 模型,然后后来误用了它,因此我在上面进行了测试……做一些类似于 Lukasz 上面所做的事情并查看构造函数基础。