提取具有参考 ID 的 json 个对象的列表 - MongoDB 和 Mongoose

Pull a list of json objects with a Reference ID - MongoDB and Mongoose

以前也有人问过类似的问题,但我无法从回复中得出可行的解决方案,所以请原谅我的无知。我正在学习这些东西。

我有架构设置

let movieSchema = mongoose.Schema({
  Title:{type: String, required:true},
  description: {type: String, required:true},
  genre: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Genre'}],
  director: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Director'}],
  Actors: [String],
  imageUrl: String,
  featured: Boolean
});

对应的流派架构

let genreSchema = mongoose.Schema({
  name: {type: String, required: true},
  description: String
});

然后我尝试使用端点并提取所有包含该类型 ID 的电影。我没有得到任何错误,只是一个空白结果。

app.get('/movies/:genre',  passport.authenticate('jwt', {session:false}), (req, res) => {
  Movies.find({ genre:req.params.genre })
    .then((movies) => {
      res.status(201).json(movies);
    })
    .catch((err) => {
      console.error(err);
      res.status(500).send('Error: ' + err);
    });
});

为了测试请求,我会使用 /movies/609eab2d182950cee2ca2383

感谢您的帮助!

查询不正确,你现在所做的是说字段类型应该与你在参数中得到的id相同。您需要重新编写它。试试这个。

  Movies.find({ 'genre.type' : req.params.genre })
    .then((movies) => {
      res.status(201).json(movies);
    })
    .catch((err) => {
      console.error(err);
      res.status(500).send('Error: ' + err);
    });

所以工作方法如下

app.get('/movies/:genre',  passport.authenticate('jwt', {session:false}), (req, res) => {
  const genre = req.params.objectID;
  Movies.find({ 'genre.type':genre })
    .then((movies) => {
      res.status(201).json(movies);
    })
    .catch((err) => {
      console.error(err);
      res.status(500).send('Error: ' + err);
    });
});

现在可以使用了!