Object 未在 ejs 文件中解析

Object not being parsed in ejs file

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

渲染所有电影页面时,我能够解析 object 并使用 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

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

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

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