首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node/Hapi.js -如何通过hapi.js从数据库中流/追加结果集?

Node/Hapi.js -如何通过hapi.js从数据库中流/追加结果集?
EN

Stack Overflow用户
提问于 2016-01-15 17:10:38
回答 1查看 1K关注 0票数 0

我正在尝试创建REST服务,它通过hapi.js从数据库返回数据作为响应。

我使用乏味的方法执行SQL查询,我希望将结果格式化为JSON或XML,并将其作为hapi请求的响应返回。请注意,这并不是单调乏味的,我可以在任何数据库中遇到同样的问题。乏味的有一个回调,每次从结果集中接收一个新行时都会调用该回调:

代码语言:javascript
复制
sqlRequest.on('row', function (columns) {
        fnOutput(columns[0].value);
});

这是一个列输出的最简单的例子。fnOutput是一个自定义函数,它接受应该返回的文本。它可以连接结果并将其格式化为将返回给客户端的JSON。

我将逐行获取值,并希望将值连接在行中,并通过hapi将它们返回给客户端。如何连续地将部分结果发送到响应?

  1. 我不想连接这个回调中的所有行,然后在查询完成时推送整个格式化的JSON。我不知道我会有多少记录,我想避免大的字符串,将积累。
  2. 如果我每次获得新行时都尝试在fnOutput中调用reply(FnOutput),当第二行返回时,它会失败:“应答接口调用了两次”。

每当我在回调函数中获得新行时,是否有什么方法可以持续地将此回调结果追加到hapi.js输出流中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-24 19:52:44

您可以使用request.raw.res.write()将数据写入原始响应。

request.raw.res是原始的ServerResponse对象,您可以在这里找到write方法的文档:callback

一旦您完成了数据的编写,您就需要告诉hapi,您已经完成了通过调用reply.close()手动处理请求

类似的东西(未经测试):

代码语言:javascript
复制
sqlRequest.on('row', function (columns) {
    request.raw.res.write(columns[0].value);
});

sqlRequest.on('done', function () {
    reply.continue();
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34816295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档