res.render在查询节点中的mysql后无法获取结果参数

时间:2017-11-22 15:36:00

标签: mysql node.js express

我正在使用express进行节点应用。但我遇到了一个非常奇怪的错误。

router.post('/search', function (req, res, next) {
  var key = req.body.search;
  if(key.length>0) {
    connection.query('select * from patient where name=?', [key], function(err, result) {
      if(err) return console.log(err);
      console.log(result);  
      res.render('searchPage', {
        name: "Alex",
        birthday: result.Birthday,
        sex: result.sex,
        symptom: result.Symptom,
        contact: result.Contact,
      });
    })
  }
})

在我发布搜索内容之后,我在命令行中找到了一些内容。

[ RowDataPacket {
    id: '1',
    Name: 'Alex',
    Birthday: null,
    sex: null,
    Sympton: null,
    Contact: '13719483934' } ]

但是我的searchPage html页面除了字符ALex之外我没有得到任何内容。看起来我的jade文件可以正确获取变量值,但result param在res.render()内失败。问题在哪里?

1 个答案:

答案 0 :(得分:1)

results是一个数组(查看文档总是如此)。所以你应该使用像这样的第一个元素(来自:https://github.com/mysqljs/mysql

pool.query('SELECT 1 + 1 AS solution', function (error, results, 
  fields) {
    if (error) throw error;
      console.log('The solution is: ', results[0].solution);
 });