2016-06-10 75 views
0

我想在我的用户对象中创建find方法。这个函数应该返回用户。但是对于这个例子,它只返回文本。async.js返回值形式的最后一个函数

但我不知道如何返回瀑布的价值。

当我运行

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

在我的输出我得到了“不确定”,但我除了“功能查找768,16返回此值”,如果我要得到我应该做的“功能查找768,16返回此在我的输出

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

每个'.find'是坏主意之前连接。 –

回答

1

功能find值”文本必须有一个回调过,你在waterfall回调调用。您不能从异步函数同步返回值。

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

这应该被称为像

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

我尝试这个,但我得到的错误:TypeError:undefined不是函数 我想要的,你可以看到我的更新。 http://pastebin.com/qVXTpNWS –

+0

我在帖子中看不到任何更新。 –

+0

更新可在pastebin.com/qVXTpNWS –