【问题标题】:Object not being parsed in ejs file对象未在 ejs 文件中解析
【发布时间】:2020-08-19 18:08:06
【问题描述】:

我正在使用 MongoDB、node.js 和 express 构建电影数据库。我目前有两条路线,一条呈现显示数据库中所有电影的页面,另一条显示单个电影的信息。问题是当使用 ejs 为每个单独的电影渲染页面时,我无法解析传递的对象,该对象包含标题、年份和一些图像数组。

在渲染所有电影页面时,我能够解析对象并使用 ejs 显示它。所以我不确定这两条路线的区别是什么。

电影架构

const movieSchema = new mongoose.Schema({
name: String,
date: String,
production: String,
cast: String,
remarks: String,
lobbyCards: Array,
filmStills: [
    {
        url: String,
        caption: String
    }
],
behindStills: [
    {
        url: String,
        caption: String
    }
],
advertising: [
    {
        url: String,
        caption: String
    }
]

});

这是两条路线:

所有电影

app.get('/movies', (req, res) => {
movie.find({}, (err, movies) => {
    if (err) {
        console.log(err);
    } else {
        res.render('movies', { movies: movies });

        // console.log(movies);
    }
});

});

个人电影

app.get('/movies/:name', (req, res) => {
movie.find({ name: req.params.name }, (err, movieData) => {
    if (err) {
        console.log(err);
    } else {
        res.render('show', { movieData: movieData });
    }
});

});

如果我 console.log(movieData) 它被记录为一个数组。

All Films Ejs file

Individual Film Ejs file

这是从所有电影页面呈现的内容 All films

这是从个人电影页面呈现的内容 Individual film

【问题讨论】:

  • 在 de else 和 res.render 之前...如果你 console.log movieData 显示数据?
  • 是的,它 console.logs 数组内的整个对象
  • 你能添加Movie的架构定义吗?
  • @eol 架构现已添加到问题中
  • res.render('movies/show', { movieData: movieData }); ??

标签: node.js json mongodb express ejs


【解决方案1】:

如果您想从数据库中获取单个文档,您可能希望使用:

movie.findOne({ name: req.params.name }, (err, movieData) => { ... }

使用.find(),即使只有一个文档与查询匹配,也会返回一个数组,这就是电影对象无法在您的 ejs 中显示的原因。

【讨论】:

  • 非常感谢。这是完美的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-18
  • 1970-01-01
  • 2021-10-15
  • 2012-12-27
相关资源
最近更新 更多