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

Nodejs Mongoose-コールバック地獄を回避する方法は?

    nodejsでqpromiseのチェーンを使用できます

    var Q = require('q');
    
    function findOne(filter) {
        return Q.Promise(function(resolve, reject) {
            Character.findOne(filter, function(err, character) {
                resolve({
                    err: err,
                    character: character
                });
            });
        });
    }
    
    function update(data) {
        return Q.Promise(function(resolve, reject) {
            character.update(data, function(err, characterID) {
                resolve({
                    err: err,
                    characterID: characterID
                });
            });
        });
    }
    
    findOne({ name: 'Sam' }).then(function(data) {
        if (!data.err) {
            // now you can update it.
            return update(data.character);
        } else {
            throw new Error(data.err);
        }
    }).then(function(data) {
        if (!data.err) {
            // now you can update it.
            return update(data.characterId);
        } else {
            throw new Error(data.err);
        }
        return findOne({ id: characterId });
    }).then(function(data) {
        if (!data.err) {
            // now you can update it.
            return update(data.character);
        } else {
            throw new Error(data.err);
        }
    }).catch(function(error) {
        // Handle any error from all above steps
    }).done();
    


    1. java.lang.IncompatibleClassChangeError:クラスMongoの実装

    2. MongoDB-総計

    3. mongoDBをインストールします(子プロセスが失敗し、エラー番号100で終了しました)

    4. MongoDBGoドライバー入門