我正在使用 express 框架将一个 api 服务器从一个普通的 nodejs 脚本转换为一个,以获得更好的稳定性。
我的问题之一是您无法从回调中返回值,因为原始代码仍在继续......
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
};
// ... ?
});
});
});
});
}
如何正确获取数据并将它们传递给渲染系统?