2016-05-24 7 views
0

Ich habe diese Funktion, MongooseJS, Knoten und JS mit:Callback-Funktion nicht zurück Wert

module.exports.getNextSequence = function (sequenceName) { 

    var query = { "_id": sequenceName }; 
    var update = { $inc: { seq: 1 } }; 
    var options = { new: true }; 

    this.sequence.findOneAndUpdate(query, update, options, function (err, nextNumber) { 
     if (err) { 
      console.log('got an error'); 
     }; 

     console.log(nextNumber._doc.seq); 
     return nextNumber._doc.seq; 
    }); 

}; 

... und ich bin Aufrufen es wie folgt:

var song = sequenceHandler.getNextSequence(CONST.SONG_NUMBER_SEQUENCE); 
    var album = sequenceHandler.getNextSequence(CONST.ALBUM_NUMBER_SEQUENCE); 

Im Debug-Modus , alles funktioniert gut, aber im laufenden Modus habe ich einen undefinierten Wert.

Was mache ich falsch?

Antwort

0

Ich weiß nicht, wie es im Debugging funktioniert hätte, weil getNextSequence keinen Wert zurückgibt. Der Rückruf in findOneAndUpdate gibt einen Wert zurück, aber nichts liest das.

Sie müssen eine Rückruffunktion in getNextSequence übergeben und dann mit nextNumber._doc.seq aufrufen, anstatt zurückzukehren.

Beispiel:

module.exports.getNextSequence = function (sequenceName, callback) { 

    var query = { "_id": sequenceName }; 
    var update = { $inc: { seq: 1 } }; 
    var options = { new: true }; 

    this.sequence.findOneAndUpdate(query, update, options, function (err, nextNumber) { 
     if (err) { 
      console.log('got an error'); 
      callback(err); 
      return; 
     }; 

     console.log(nextNumber._doc.seq); 
     callback(null, nextNumber.doc_seq); 
    }); 

}; 

var song = sequenceHandler.getNextSequence(CONST.SONG_NUMBER_SEQUENCE); 
var album = sequenceHandler.getNextSequence(CONST.ALBUM_NUMBER_SEQUENCE); 
Verwandte Themen