安定性を大幅に向上させるために、APIサーバーをプレーンなnodejsスクリプトからエクスプレスフレームワークを使用するスクリプトに変換しています。
私の問題の 1 つは、元のコードが続いているため、コールバックから値を返すことができないという事実です...
var _json = api.query();
どういうわけか、.query() が最終的な結果オブジェクトを返すことを好むので、それを JSON に文字列化してから、次のようにレンダリング エンジンに渡すことができます。
// Render the display
res.render('posts-resp', {
title: res.app.settings.app_title,
_use_Callback: _use_Callback,
json: _json
});
ただし、db クエリはコールバックを使用してクエリ結果を処理するため、このような値を返すことはできません。元のバージョンでは、db スクリプトが最終ビューのレンダリングを処理していましたが、そのように結び付けたくありません。
query: function(){
db.query( this._buildQuery(), function(err, res){
if(err){ throw err; }
res.fetchAll(function(err, rows){
if(err){ throw err; }
db.query('SELECT FOUND_ROWS() as num, UNIX_TIMESTAMP() as query_timestamp;', function(err, cnt_res){
if(err){ throw err; }
cnt_res.fetchAll(function(err, cnt_rows){
var obj = {
results:rows,
total_results:cnt_rows[0].num,
current_offset:self.offset,
query_timestamp:cnt_rows[0].query_timestamp
};
// ... ?
});
});
});
});
}
データを適切に取得してレンダリング システムに渡すにはどうすればよいですか?