30

オブジェクトがマングースオブジェクトかどうかを確認する最も簡単な方法を知っている人はいますか? toObject() が定義されているかどうか、またはより効率的な方法があるかどうかを確認するのが最善ですか。どうもありがとう

4

10 に答える 10

35

オペレーターを介してオブジェクトのプロトタイプをチェックし、instanceofそれがマングース モデルのインスタンスであることを確認できます。mongoosejs.comのサンプル スキーマを使用します。

if (obj instanceof Cat) {
    // yes, it's a mongoose Cat model object
    ...
}
于 2012-05-31T12:46:10.387 に答える
6

オブジェクトが Mongoose モデルであるかどうかを判断するための私の好みの方法は、上記とほぼ同じくらい単純ですが、完全ではありません。

function isModel(obj) {
    obj = obj || {}
    return obj.prototype instanceof mongoose.Model
}

これを使用するコンテキストでは、未定義を返したくありませんが、モデルを期待する場所で「3」またはそのような奇妙な値を取得していないことを確認する必要があります。

もちろん、これについてさらに考えてみると、「マングース オブジェクト」になる方法は複数あります。私は時々 DTO を Mongoose モデルと間違えて、後でそれを誤用したことがあります。そのため、上記のテストを行いました...しかし、何かがインスタンスであることを確認する必要があるだけで、何らかの理由でインスタンスの種類がわからない場合は、上で Lukasz が行ったことのようなことを行い、コンストラクターのベースを見てください。

于 2018-09-12T16:53:00.810 に答える