async.js return 最后一个函数的值
async.js return value form last function
我想在我的用户对象中创建查找方法。此功能应该 returns 用户。但对于此示例,它 return 只是文本。
但我不知道 return 瀑布的价值如何。
当我运行
console.log(User.find("575578a9f95d6de1354327ef"));
我的输出中有 'undefined',但我除了 'function find shoud return this value',如果我想在我的输出中得到 'function find shoud return this value' 文本,我应该怎么做
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"));
函数 find
也必须有一个回调,您可以在 waterfall
的回调中调用它。您不能 return 来自异步函数的同步值。
find: function (id, callback) {
async.waterfall(..., function (...) {
callback(null, return_value);
});
}
应该这样称呼
User.find("575578a9f95d6de1354327ef", function (err, return_value) {
console.log(return_value);
});
我想在我的用户对象中创建查找方法。此功能应该 returns 用户。但对于此示例,它 return 只是文本。
但我不知道 return 瀑布的价值如何。
当我运行
console.log(User.find("575578a9f95d6de1354327ef"));
我的输出中有 'undefined',但我除了 'function find shoud return this value',如果我想在我的输出中得到 'function find shoud return this value' 文本,我应该怎么做
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"));
函数 find
也必须有一个回调,您可以在 waterfall
的回调中调用它。您不能 return 来自异步函数的同步值。
find: function (id, callback) {
async.waterfall(..., function (...) {
callback(null, return_value);
});
}
应该这样称呼
User.find("575578a9f95d6de1354327ef", function (err, return_value) {
console.log(return_value);
});