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

MongooseのFind関数のクエリオブジェクトパラメータで渡される未定義の値を無視しますか?

    res.queryをフィルタリングする必要があります 最初に未定義/空の値からオブジェクトを取得し、次にそれをfindに渡します 関数。プロパティが2つしかない場合は、ifを使用できます。 ステートメント:

    const query = req.query;
    const conditions = {};
    
    if (query.what) {
      conditions.what = query.what;
    }
    
    if (query.where) {
      conditions.where = query.where;
    }
    
    ....
    
    
    Sound.find(conditions, function () {});
    

    または、プロパティがたくさんある場合は、それらを反復処理できます:

    const query = req.query;
    const conditions = Object.keys(query)
      .reduce((result, key) => {
        if (query[key]) {
          result[key] = query[key];
        }
        return result;
    }, {}); 
    
    Sound.find(conditions, function () {});
    

    また、実際のres.queryからプロパティを削除することはお勧めしません オブジェクト-delete res.query.what -必要に応じて、別のミドルウェアで使用することはできません。



    1. Mongodb(v2.4.0)$match集計が日付範囲で機能しない

    2. cURLを悪用してRedisと通信する

    3. MongoDb$addFieldsと$match

    4. C#ドライバーを使用してVB.NETのMongoDBドキュメントを更新する