Express.js使用渲染方法

时间:2018-02-14 14:55:23

标签: html node.js express

我想使用res.render方法显示一个完整的表格,有没有办法做到这一点?

我正在尝试的事情:

定义发送我的一个表的位置。

  

main.hbs

<html>
         ...
        <div id="main_frame" class="col s12">{{{body}}}</div>
         ...
</html>

基本视图文件......

  

home.hbs

...
{{table1}}
{{table2}}
{{table3}}
...

我的服务器正在查询我的数据库中的一些数据,我使用我的generate_table_from_product_query函数对其进行转换,并将其显示在main.hbs中的{{{body}}}部分

  

server.js

...
var rsq;

var con = mysql.createConnection({
  host: "blablabla",
  user: "login",
  password: "pw",
  database: "blablabla"
});

app.engine('.hbs', exphbs({
  defaultLayout: 'main',
  extname: '.hbs',
  layoutsDir: path.join(__dirname, 'views/layouts')
}))

app.set('view engine', '.hbs')

app.set('views', path.join(__dirname, 'views'))

app.get('/', (request, response) => {
  response.render('home', {
    table1: rsq
  })
})

app.use((err, request, response, next) => {
  console.log(err)
  response.status(500).send('nope')
})

app.listen(port, (err) => {
  if (err) {
    return console.log('error', err)
  }

  console.log(`listening port: ${port}`)
})

con.connect(function(err) {
  if (err) throw err;
  console.log("[mysql error1]",err);
  console.log("Connected!");
  var sql_request = 'SELECT * FROM produit'
  con.query(sql_request, function (err, req_result) {
    rsq=generate_table_from_product_query(req_result);
    console.log(rsq);
    console.log("[mysql error]",err);
  });
});

这是我最终的结果:

my result

我曾尝试使用app.send,但我不能用这种方法将它注入正确的位置。

由于

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找如何使用Handlebars显示html内容。 看看这里:https://stackoverflow.com/a/16863979/5133130