gpt4 book ai didi

node.js - 查询 mongoose 中的 ObjectId 字段时获取空数组

转载 作者:太空宇宙 更新时间:2023-11-04 00:13:06 25 4
gpt4 key购买 nike

我有什么
我定义了一个 Mongoose 模式,如下

var favoriteSchema = new Schema({

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

我还为此模型/架构定义了 get/post 路由:

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 请求时,我得到一个空数组。

我尝试过的
· 我尝试通过 console.log(req.user.id) 来确认这是正确的。
· 我也尝试不按用户过滤 ->Favorites.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 应用于 promise ,而现在你却将它应用于任何东西。试试这个:

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

关于node.js - 查询 mongoose 中的 ObjectId 字段时获取空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48559394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com