在猫鼬中查询 ObjectId 字段时获取空数组



我有什么
,我定义了一个猫鼬模式,如下所示

var favoriteSchema = new Schema({
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
cars: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Car'
}]
}, {
timestamps: true
});

我还为此模型/模式定义了获取/发布路由:

favoriteRouter.route('/')
.get((req,res,next) => {
Favorites.find({user: req.user.id})
console.log(req.user.id);
//.populate('user')
//.populate('cars')
.then((favorites) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json(favorites);
}, (err) => next(err))
.catch((err) => next(err));
})
.post((req, res, next) => {
Favorites.create(req.body)
.then((favorite) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json(favorite);
}, (err) => next(err))
.catch((err) => next(err));
})

我需要什么
"获取"操作对我不起作用。我想检索用户的所有收藏夹。post请求工作正常,所以我可以看到使用mongo控制台正确存储的文档,但是当我执行get请求时,我得到一个空数组。

我尝试过的
·我试图安慰.log(req.user.id)以确认这是正确的。
·我也尽量不按用户过滤 -> 收藏夹.find({}),这工作正常。
·我尝试了Favorites.find({'name': ...})和Favorites.find({name: ...}),但它们都不适合我。

任何帮助将不胜感激。谢谢

此代码错误

Favorites.find({user: req.user.id})
console.log(req.user.id);
//.populate('user')
//.populate('cars')
.then((favorites) => {

你必须将 .then 应用于承诺,现在你什么都不应用。试试这个:

console.log(req.user.id);
Favorites.find({user: mongoose.Schema.Types.ObjectId(req.user.id)})
.then((favorites) => {

最新更新