【问题标题】:How to display MySQL "result" object to user with express-handlebars?如何使用 express-handlebars 向用户显示 MySQL“结果”对象?
【发布时间】:2017-11-26 13:25:12
【问题描述】:

我目前在我的节点 js 中有一个查询,如下所示:

app.get('/fav/books', function(req, res){
var sql = ("SELECT title, pictureUrl, author, description, genre FROM books")
  connection.query(sql, function(err, result){
    if(err) {
      console.log('Error in the query.');
    } else {
      console.log('Success!\n');
      console.log(result);
      var book = result;
      return book;
    }
  });
});

并像这样输出到控制台: Console Output

我想“还书”;给带有把手的用户,像这样的卡片输出:

<div class="page-carousel">
  <div class="panel id1">
    <img href="pictureUrl"/>
    <h3>title</h3>
    <p><strong>author</strong></p>
    <p>description</p>
    <p>genre</p>
  </div>
</div>

面板将是图书的 ID,因为它需要创建与 ID 一样多的面板。图书信息将保持原样。

【问题讨论】:

    标签: javascript mysql node.js express handlebars.js


    【解决方案1】:

    我可以看到您返回的书籍是一个对象数组,每个对象都包含一个书籍信息,在这种情况下,我们需要在把手中的循环中进行迭代,例如 -

    {{#each book}}
      <div class="page-carousel">
        <div class="panel id1">
          <img href={{book.pictureUrl}}/>
          <h3>{{book.title}}</h3>
          <p><strong>{{book.author}}</strong></p>
          <p>{{book.description}}</p>
          <p>{{book.genre}}</p>
        </div>
      </div>
    {{/each}}
    

    【讨论】:

    • 这不起作用。我认为必须有渲染的东西或带有把手的助手才能让“书”进入 home.handlebars 页面。
    【解决方案2】:

    Angularjs 非常适合这个。将此响应对象分配给 $scope 变量,例如 $books。然后您可以这样做:

    <div class="page-carousel">
      <div ng-repeat="x in books" class="panel {{x.id}}">
        <img href="{{x.pictureUrl}}"/>
        <h3>{{x.title}}</h3>
        <p><strong>{{x.author}}</strong></p>
        <p>{{x.description}}</p>
        <p>{{x.genre}}</p>
      </div>
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      • 2018-06-20
      • 2020-03-13
      • 1970-01-01
      • 1970-01-01
      • 2014-10-23
      相关资源
      最近更新 更多