Haraka (smtp サーバー) プラグインに Node.js を使用するプロジェクトに取り組んでいます。
これは Node.JS で、コールバックに少し問題があります。この特定のコードをコールバックを使用するように変換できませんでした。
だから、これは私が持っているコードです:
exports.hook_data = function (next, connection) {
connection.transaction.add_body_filter('', function (content_type, encoding, body_buffer) {
var header = connection.transaction.header.get("header");
if (header == null || header == undefined || header == '') return body_buffer;
var url = 'https://server.com/api?header=' + header ;
var request = require('request');
request.get({ uri: url },
function (err, resp, body) {
var resultFromServer = JSON.parse(body);
return ChangeBuffer(content_type, encoding, body_buffer, resultFromServer);
}
);
});
return next();
}
リクエストのコールバックが継続するのを待たないため、このコードは機能しません。までにリクエストを終わらせる必要がありnext()
ます;
要件は次のとおりです。
- の最後
exports.hook_data
に返す必要がありnext()
ます。しかし、それは要求の後にそれを返せばよいだけです。 Buffer
inを返す必要がadd_body_filter
ありますが、サーバーから取得した情報でバッファーを作成する必要があります。- Get Request を作成するには、
header
内部にのみあるパラメーター ()を使用する必要がありますadd_body_filter
。
したがって、問題は、リクエストadd_body_filter
を作成するために必要なパラメーターが 内にしかないため、前にリクエストを作成して結果をコールバック内に入れることができないことadd_body_filter
です。
アドバイスをお願いします。