首页 > 解决方案 > 如何在两个模式 mognose node.js 之间进行参考

问题描述

我尝试在我的 MERN 应用程序 beetwen 中引用两个模式 Movie 和 Seanse。这是我的电影架构:

 const Movie = mongoose.Schema({
  title: {
    type: String,
    require: true,
  },
  movieDescription: {
    type: String,
    require: true,
  },
  movieImgUrl: {
    type: String,
    require: true,
  },
  seanses: [
    {
      type: Schema.Types.ObjectId,
      ref: "Seanse",
    },
  ],
});

export default mongoose.model("Movie", Movie);

这是我的 Sease 架构:

const Seanse = mongoose.Schema({
  date: {
    type: Date,
    require: true,
  },
  hour: {
    type: String,
    require: true,
  },
  movie: {
    type: Schema.Types.ObjectId,
    ref: "Movie",
  },
  bookings: {
    type: Array,
    require: true,
  },
});

export default mongoose.model("Seanse", Seanse);

但是当我在邮递员中请求电影时,我看到空数组,这是我获取所有电影的代码:

async findAll(req, res) {
    const movies = await Movie.find().populate({
      path: "seanses",
      model: "Seanse",
    });
    return res.status(200).send({ data: movies });
  },

这是我在 Postman 收到的:

 {
      "seanses": [],
      "_id": "5f5bea1993df462974d63e66",
      "title": "Hacker 5",
      "movieDescription": "Lorem Ipusm",
      "movieImgUrl": "https://m.media-amazon.com/images/M/MV5BZGJiZGMwMmUtMjdiZS00M2QzLWE3YjAtNTU2MjQ2ZDE3NDE1XkEyXkFqcGdeQXVyMTc5OTQwMzk@._V1_.jpg",
      "__v": 0
    }

当然,我之前已经创建了 sease,其中我在“电影”字段中输入了现有电影的 id

标签: node.jsmongodbexpressmongoose

解决方案


Mongoose 总是在模型名称的末尾添加“s”,因此您应该重命名MovieMovies和。SeanseSeanses


推荐阅读