2016-06-10 11 views
0

Ich möchte Find-Methode in meinem Benutzerobjekt erstellen. Diese Funktion sollte Benutzer zurückgeben. Aber für dieses Beispiel gibt es nur den Text zurück.async.js Rückgabewert Formular letzte Funktion

Aber ich weiß nicht, wie Rückgabewert für Wasserfall.

Als ich

console.log(User.find("575578a9f95d6de1354327ef")); 

betreibe ich in meiner Ausgabe ‚undefined‘ habe, aber ich außer ‚Funktion find shoud diesen Wert zurückgeben‘, Was sollte ich tun, wenn ich will ‚Funktion find shoud zurückkommen Wert‘Text auf meiner Ausgabe

User = { 
    collectionName: 'users', 

    find: function(id){ 
     async.waterfall(
      [ 
      function(callback) { 
       MongoClient.connect('mongodb://127.0.0.1:27017/lingogo', function(err,db) { 
        if(err) { throw err} 
        callback(null, db, id); 

       }); 
      }, 
      function(db,id, callback) { 
       var collection = db.collection(User.collectionName); 
       collection.find({'_id': ObjectID(id)}).toArray(function (err, result) { 

        if (err) { throw err }; 

        if (result[0] && result[0]._id != '') { 
         return callback(null,result[0]); 
        } 

        return callback(null,null); 
       }) 
      }, 
      ], 
      function (err, user) { 

       return 'function find shoud return this value'; 
      } 
     ); 
    } 
} 
console.log(User.find("575578a9f95d6de1354327ef")); 
+0

verbinden vor jeder '.find' schlechte Idee ist aufgerufen werden soll. –

Antwort

1

Funktion find muss auch einen Rückruf hat, dass Sie in einem Rückruf von waterfall nennen. Sie können einen Wert nicht synchron aus einer asynchronen Funktion zurückgeben.

find: function (id, callback) { 
    async.waterfall(..., function (...) { 
     callback(null, return_value); 
    }); 
} 

, die wie

User.find("575578a9f95d6de1354327ef", function (err, return_value) { 
    console.log(return_value); 
}); 
+0

Ich versuche das, aber ich habe Fehler: TypeError: undefined ist keine Funktion Ich möchte, können Sie mein Update sehen. http://pastebin.com/qVXTpNWS –

+0

Ich sehe keine Updates in der Post. –

+0

Update ist verfügbar unter pastebin.com/qVXTpNWS –