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

マングース:モデルの配列をループしてデータを検索する

    このコードスニペットを確認してください。必要なものの実用的なサンプルを作成しました。理解を深めるために、コード内のコメントを確認してください。

    必要なものと同様のサンプル作業コード。マングースで非同期を使用するための別の参照。

    /*
     * Object to store all models
     */
    var allRefDatasSchemas = {
      RefAllotement: mongoose.model('RefAllotement', RefDataSchema),
      RefModeleConstructeur: mongoose.model('RefModeleConstructeur', RefDataSchema),
      RefTypeKit: mongoose.model('RefTypeKit', RefDataSchema),
      RefTypeUtilisation: mongoose.model('RefTypeUtilisation', RefDataSchema),
    };
    /*
     * need an array to run all queries one by one in a definite order using async waterfall mwthod
     */
    var arr = [];
    for(each in allRefDatasSchemas) {
        arr.push(each);
    }
    
    /*
     * Callback function for initiation of waterfall
     */
    var queue = [
        function(callback) {
            // pass the ref array and run first query by passing starting index - 0
            callback(null, arr, 0)
        }
    ];
    
    /*
     * Object to store result of all queries
     */
    var finalResult = {};
    
    /*
     * Generic Callback function for every dynamic query
     */
    var callbackFunc = function(prevModelData, currentIndex, callback) {
        allRefDatasSchemas[arr[currentIndex]].find(function(err, result) {
            if(err) {
                console.log(err)
            } else {
    
                // Your Query
                // 
                // I'd like to do something like that :
                // but this.modelName is null, because it isn't the model
                // on which the find is done.
    
                // arr[currentIndex] will point to 
                // RefAllotement, RefModeleConstructeur etc. as you required
                finalResult[arr[currentIndex]] = result
    
                // send current result to next interation if required or you can skip
                // and increment the currentIndex to call next query 
                callback(null, result, currentIndex + 1)
            }
        })
    }
    
    /*
     * Add callback function for every dynamic query
     */
    for(each in allRefDatasSchemas) {
        queue.push(callbackFunc);
    }
    
    /*
     * Run all dynamic queries one by one using async.js waterfall method
     */
    async.waterfall(queue, function (err, result) {
        // Final object with result of all the queries
        console.log('finish', finalResult)
    });
    

    出力 この形式になります

    finish { RefAllotement:[
            // Result of RefAllotement query
        ],
        RefModeleConstructeur:[
            // Result of RefModeleConstructeur query
        ],
        RefTypeKit:[
            // Result of RefTypeKit query
        ],
      RefTypeUtilisation:[
            // Result of RefTypeUtilisation query
        ]
    }
    



    1. StackExchange.Redis:複数のハッシュのバッチアクセス

    2. MongoDbとNodejsでajaxページネーションを行うための最良の方法は何ですか?

    3. AWSでのActionCable:WebSocketハンドシェイク中のエラー:予期しない応答コード:404

    4. MongoDB接続の.NETベストプラクティス?