MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Nodejs Mongoose - как да избегнем ада с обратно извикване?

Можете да използвате верижно свързване на q promise в nodejs

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. java.lang.IllegalArgumentException:Очаква се уникален резултат или нула, но има повече от един! - Spring Data Mongo

  2. Как да направите персонализирано картографиране с помощта на mongo конектор с elasticsearch

  3. Копирайте и преименувайте поле на документ в MongoDB

  4. Грешка при актуализиране на документа Mongoose

  5. MongoDB:пребройте броя на елементите в масива