流结果和res.render nodejs

时间:2012-04-18 06:55:52

标签: node.js coffeescript express

我在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 

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

3 个答案:

答案 0 :(得分:0)

您可以直接使用首选的模板引擎

var row = _.template('<tr><td> <%= id > </td> </tr>');
...
database.getUser "username", (result)->
  res.write( row(result) );

答案 1 :(得分:0)

您可能想要使用Express partials

答案 2 :(得分:0)

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

 query = mysql.query "select * from users where id = 2"
 data = []
 query.on "row", (row)->
   data.push row
 query.on "end", ()->
   callback data