如何在控制台中使用json数据进行把手模板设计(node.js)

时间:2017-01-26 19:05:39

标签: html json node.js handlebars.js

我正在使用api在我的node.js应用程序中获取JSON数据,当我在控制台中打印它时,它可以工作,但我无法将数据显示在我的应用模板上。

以下是我从api获取数据的代码:

Router.get('/movie/search', function(req,res){
  var search=req.query;

  imdb.getReq({name: search.moviename},(err,things) => {
    console.log(things);
    if (err) {

    }
      JSON:true;
        res.render('movie/search', {movieList: things});

  });
});

以下是控制台数据:

TVShow {
  title: 'Gu Family Book',
  _year_data: '2013–',
  year: 2013,
  rated: 'N/A',
  released: 2013-04-07T21:00:00.000Z,
  runtime: 'N/A',
  genres: 'Action, Comedy, Fantasy',
  director: 'N/A',
  writer: 'N/A',
  actors: 'Sung-ha Jo, Hye-Young Jung, Hee-won Kim, Sung-jae Lee',
  plot: 'N/A',
  languages: 'Korean',
  country: 'South Korea',
  awards: 'N/A',
  poster: 'https://images-na.ssl-images-amazon.com/images/M/MV5BMTcwM2IxNWYtYWY2Yy00NTFjLTljYjgtYWQ1YmJkMzAzODNjXkEyXkFqcGdeQXVyMzE4MDkyNTA@._V1_SX300.jpg',
  metascore: 'N/A',
  rating: '8.1',
  votes: '591',
  imdbid: 'tt2816734',
  type: 'series',
  totalseasons: 1,
  response: 'True',
  series: true,
  imdburl: 'https://www.imdb.com/title/tt2816734',
  _episodes: [],
  start_year: 2013,
  end_year: null }

Handlebars模板代码:

{{#each movieList}}
  <div class="movie">
    <img src="{{poster}}">
    <br>Type:{{type}}</br>
    <br class="movieinfo">Year:{{_year_data}}</br>
    <br>IMDb:{{imdbid}}<br>
    <br>Discription:{{plot}}</br>
{{/each}}

数据不会显示在我的应用上。

1 个答案:

答案 0 :(得分:0)

things 不是数组,而是一个对象。通过#eaching超过movieList,您不会遍历Movie个对象的列表,而是遍历单个对象中的每个属性;即,title_year_datayear等。在#each块内部,必须使用mustaches中的每个项目作为查找当前迭代的属性键属性;例如,title.postertitle.type

由于我们没有处理Movie个对象的列表,而只是一个,我们将模板数据对象重命名为movie。接下来,在我们的模板中,我们可以删除#each块,只需直接访问movie对象的属性。

渲染电话:

res.render('movie/search', { movie: things });

模板:

<div class="movie">
    <img src="{{movie.poster}}">
    <p>Type:{{movie.type}}</p>
    <p class="movieinfo">Year:{{movie._year_data}}</p>
    <p>IMDb:{{movie.imdbid}}</p>
    <p>Description:{{movie.plot}}</p>
</div>    

此外,我不知道代码中JSON:true;行的目的是什么,但应将其删除。此外,在您的模板中,您缺少一个结束div标记,并错误地包括关闭break标记。可以找到HTML中断标记的正确用法here。我已在模板中更正了这些错误,并在&#34;描述&#34;。

中修正了拼写错误