我的猫鼬查询遇到了一个奇怪的问题。当我执行db.collection.find()
时,应该返回预期的对象。我在mongo
shell
当我在快速路由器端点中执行类似查询时,得到数组而不是对象。喜欢
[
{
"dishes": [
"5eca615117611c0480320c12",
"5eca615117611c0480320c15"
],
"_id": "5ecae7eb2e746b312cfdf59e",
"user": "5ec644d06715633270d0414d",
...
}
]
这会在我的前端反应应用程序中导致错误。这是我最喜欢的模型中的架构:
var favoriteSchema = new Schema(
{
dishes: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'Dish',
unique: true,
},
],
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
},
},
{
timestamps: true,
}
);
这是我的明确终点:
.get((req, res, next) => {
Favorites.find({})
.then(
(favorite) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json(favorite);
console.log(favorite);
},
(err) => next(err)
)
.catch((err) => next(err));
})
衷心感谢是否有人帮助我解决这个问题。
答案 0 :(得分:1)
如果您要查找单个结果或为null,则可能希望将findOne
与猫鼬一起使用。如果您使用find
,则预期结果将超过一行。
请记住,您应该处理“收藏夹”为null(当您找不到要查找的行时)的情况。此时,您可能需要返回其他响应。
答案 1 :(得分:0)
.find({parameter})通过给定参数返回数据库中的所有对象。