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

mongoose.jsクエリを同期的に実行する

    node.jsを使用している場合は、https://github.com/caolan/async

    を使用する必要があります

    複数のコレクションからデータをフェッチする必要がある場合は、クエリを複数回チェーンする必要があります。

    コードが複雑で読みにくくなり、モジュール性がなくなります。非同期を使用して、mongodbとnode.jsを使用してモジュール性を作成します

    私のプロジェクトのサンプルコード:

    var async = require('async');
    
    var createGlobalGroup = function(socket, data) {
        async.waterfall(
        [
        /**
         * this function is required to pass data recieved from client
         * @param  {Function} callback To pass data recieved from client
         */
    
        function(callback) {
            callback(null, socket, data);
        },
        /**
         * Step 1: Verify User
         */
        verifyUser,
        /**
         * Step 2: Check User Access Rights And Roles
         */
        checkUserAccessRightsAndRoles,
        /**
         * Step 3: Create Project
         */
        createNewGlobalGroup], function(err, result) {
            /**
             * function to be called when all functions in async array has been called
             */
            console.log('project created ....')
        });
    }
    verifyUser = function(socket, data, callback) {
    //do your query
        /**
         * call next function in series
         * provide sufficient input to next function
         */
        callback(null, socket, data, {
            "isValidUser": true,
        });
    }
    
    checkUserAccessRightsAndRoles = function(socket, data, asyncObj, callback) {
        //do your query
        if(condition) {
            callback(null, socket, data, {
                roles: result,
                "isValidUser": asyncObj.isValidUser,
                "userId": asyncObj.userId,
            });
        } else {
        //no call back
        }
    }
    
    var createNewGlobalGroup = function(socket, data, asyncObj, callback) {
    //wanna stop then no callback
    }
    


    1. Stackexchange.Redisのファイア・アンド・フォーゲットは配信を保証しますか?

    2. Mongodb Mongoimportが大きすぎます:解析エラーの失敗

    3. 2つのフィールドを使用したマングースカスタム検証

    4. 従来のIDを使用したMeteorコレクションの更新