0

我在 nodejs 中使用 express 和 mysql-native。使用 mysql-native 我从 db 中逐行流式传输结果,如下所示(在咖啡中):

exports.getUser = (username,callback) ->
 query = mysql.query "select * from users where username = #{username}"
 query.on "row", (row)->
  callback row

(显然我会使用准备好的语句,这是一个例子)

这种方法不适用于 res.render 因为每次获得新行时都不能多次调用 res.render

database.getUser "username", (result)->
  res.render "people", "data" : result 

是否有其他方法可以发送流式数据,或者我是否必须使用套接字将结果流式传输到视图?

4

3 回答 3

0

您可以直接使用您喜欢的模板引擎

var row = _.template('<tr><td> <%= id > </td> </tr>');
...
database.getUser "username", (result)->
  res.write( row(result) );
于 2012-04-18T08:55:59.813 回答
0

您可能想要使用Express partials

于 2012-04-18T12:27:00.853 回答
0

昨晚我在灵感的时刻想出了这个问题,因为我正在流式传输数据,我可以在流结束时收听并运行我的回调。这样我就可以将数据推送到一个数组,然后在回调中使用,如下所示:

 query = mysql.query "select * from users where id = 2"
 data = []
 query.on "row", (row)->
   data.push row
 query.on "end", ()->
   callback data
于 2012-04-18T15:46:17.780 回答