sql >> データベース >  >> NoSQL >> MongoDB

プロパティが存在するのに、マングースモデルのhasOwnPropertyがfalseを返すのはなぜですか?

    これは、mongooseから取得したドキュメントオブジェクトがプロパティに直接アクセスしないためです。プロトタイプチェーンを使用するため、hasOwnProperty falseを返します(これを大幅に簡略化しています)。

    次の2つのいずれかを実行できます。toObject()を使用する プレーンオブジェクトに変換すると、チェックはそのまま機能します:

    var userPOJO = User.toObject();
    if ( !(userPOJO.hasOwnProperty('local') && userPOJO.local.hasOwnProperty('password')) ) {...}
    

    または、値を直接確認することもできます:

    if ( !(User.local && User.local.password) ) {...}
    

    どちらのプロパティも偽の値を持つことはできないため、データが入力されているかどうかをテストするために機能するはずです。

    編集:私が言及するのを忘れたもう1つのチェックは、Mongooseの組み込みのgetを使用することです。 方法:

    if (!User.get('local.password')) {...}
    


    1. PythonRedisの相互作用

    2. redis:alpineDockerイメージを実行する際の警告を修正する方法

    3. 一言で言えばClouderaオペレーショナルデータベースレプリケーション

    4. MongoError:フィルターパラメーターはオブジェクトである必要があります