node js将mysql数据返回给变量

时间:2014-07-01 11:50:59

标签: node.js express pug node-mysql

我尝试使用节点js和mysql,以及将数据库中的数据渲染到视图中。

问题是,如何在1个视图中渲染多个数据(使用jade模板)。

router.get('/about', function(req, res) {

  var animalsData = sequelize.query("SELECT * FROM animals").success(function(rows) {
     return rows;
  });
  console.log(animals); // returns 'undefined'

  var humansData = sequelize.query("SELECT * FROM humans").success(function(rows) {
    return rows;
  });
  console.log(humans); // returns 'undefined'

  res.render('about', { animals: animalsData, humans: humansData });
});

如您所见,我如何获取数据然后将其传递到视图中?如果我希望将5或6位数据(mysql查询)传递给视图,那么使用嵌套回调会变得混乱吗?

由于

1 个答案:

答案 0 :(得分:0)

首先,那些回报不起作用。您运行的代码是异步。我建议你使用承诺:

var q = require("q");

router.get('/about', function(req, res) {
  var animalDeferer = q.defer(),
      humanDeferer = q.defer;

  sequelize.query("SELECT * FROM animals").success(function(rows) {
     animalDeferer.resolve(rows);
  });

  sequelize.query("SELECT * FROM humans").success(function(rows) {
     humanDeferer.resolve(rows);
  });

  Q.all([animalDeferer.promsie, humanDeferer.promise]).spread( function(animalsData, humansData) {
    res.render('about', { animals: animalsData, humans: humansData });
  });

});

我直接在答案框上写了这个,所以它可能有拼写错误。

q - https://github.com/kriskowal/q