最近のバージョンのasync滝では、cbは利用できなくなったことを理解しています。loopbackJSのノードasync滝の結果を返す
そのような場合、リモートメソッドにどのように応答するのですか?私はこれをどこでも説明できるとは思わない。
非同期ドキュメントの例を使用する。
async.waterfall([
function(callback) {
callback(null, 'one', 'two');
},
function(arg1, arg2, callback) {
// arg1 now equals 'one' and arg2 now equals 'two'
callback(null, 'three');
},
function(arg1, callback) {
// arg1 now equals 'three'
callback(null, 'done');
}
], function (err, result) {
// result now equals 'done'
// HOW DO I RETURN result TO THE CALLER OF THE REMOTE METHOD?
// HOW DO I RETURN result TO THE CALLER OF THE REMOTE METHOD?
// HOW DO I RETURN result TO THE CALLER OF THE REMOTE METHOD?
});
EDIT:私が実際に応答を返そうとしている実際のイベントです。以前のバージョンの非同期では、これはcb()に渡すだけでしたが、これはもはやasyncでサポートされていないようです。
Ticket.addComment = function(id, comment, postedBy, cb) {
async.waterfall([
//get ticket and add content
function(callback){
Ticket.findById(id, function(err, ticket){
ticket.ticketComments.create({ "body": comment });
callback(null, ticket);
});
},
//update ticket isWith
function(ticket, callback){
ticket.save(null, {
"id": ticket.id,
"isWith": postedBy
});
callback(null,ticket);
}
], function(err, ticket){
// I NEED TO RETURN "ticket" TO THE METHOD CALLER.. THIS USED TO BE DONE BY PASSING "ticket" INTO cb().
});
}
Ticket.remoteMethod('addComment', {
http: { verb: 'post'},
accepts: [
{arg: 'id', type: 'string', description: 'ticket id of the ticket the comment is to be added to'},
{arg: 'comment', type: 'string', description: 'the comment body'},
{arg: 'postedBy', type: 'string', description: 'Who posted the comment'}
],
returns: {arg: 'comment', root: true, type: 'application/json'}
});
こんにちはflaviodesousa ..はい、私は何かを返す必要があります。これは、チケットを更新するAPI呼び出しです。返されたチケットが必要です。最終コールバックに配置する必要があることを説明できますか?私はそれをやっていますが、API呼び出しに戻っていないようです。私は実際のイベントでチケットを更新し、私は応答を渡そうとしています。ありがとうございました – Jason
非同期コードの外観の例を追加しました。 APIにはいくつかの問題がありますが、非同期には見えません。 – flaviodesousa