我正在尝试创建REST服务,该服务通过hapi.js作为响应从数据库返回数据。
我使用繁琐的执行SQL查询,我想将结果格式化为JSON或XML,并将它们作为hapi请求的响应返回。请注意,这不是特定的乏味,我可以在任何数据库中遇到同样的问题。 Tedious有一个回调,每次从结果集中收到一个新行时都会调用它:
sqlRequest.on('row', function (columns) {
fnOutput(columns[0].value);
});
这是一个列输出的最简单示例。 fnOutput是一个自定义函数,它接受应该返回的文本。它可以连接结果并将它们格式化为将返回给客户端的JSON。
我逐行获取,我希望在行中连接值并通过hapi将它们返回给客户端。 如何将部分结果连续发送到响应中?
每次在回调函数中获取新行时,是否有某种方法可以在此回调中将结果连续追加到hapi.js输出流?
答案 0 :(得分:1)
您可以使用request.raw.res.write()
request.raw.res
是原始ServerResponse对象,您可以在此处找到write
方法的文档:https://nodejs.org/dist/latest-v4.x/docs/api/http.html#http_response_write_chunk_encoding_callback
完成数据写入后,您需要告诉hapi您已完成通过调用reply.close()
手动处理请求
类似的东西(未经测试):
sqlRequest.on('row', function (columns) {
request.raw.res.write(columns[0].value);
});
sqlRequest.on('done', function () {
reply.continue();
});