提取具有参考 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);
});
});
现在可以使用了!
以前也有人问过类似的问题,但我无法从回复中得出可行的解决方案,所以请原谅我的无知。我正在学习这些东西。
我有架构设置
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);
});
});
现在可以使用了!