我正在使用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}}
数据不会显示在我的应用上。
答案 0 :(得分:0)
things
不是数组,而是一个对象。通过#eaching
超过movieList
,您不会遍历Movie
个对象的列表,而是遍历单个对象中的每个属性;即,title
,_year_data
,year
等。在#each
块内部,必须使用mustaches中的每个项目作为查找当前迭代的属性键属性;例如,title.poster
,title.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;。