所以我知道我当前的ID在我的数据库中,但是findOne
却没有找到它。当我控制台日志req.params.video_id
时,它显示正确的ID。我该如何开始调试呢?我通过MLAB UI验证了该视频是否在我的数据库中。
VideoSchema代码段
video: {
type: Schema.Types.ObjectId,
ref: "users"
}
API路由
Video.findOne({ video: req.params.video_id })
.then(video => {
res.json(video);
})
.catch(err => {
res.status(404).json({ video: "Video doesn't exist" });
});
答案 0 :(得分:0)
由于视频模式中的 type 被定义为ObjectId,请尝试使用ObjectId类型进行搜索,如果有任何结果,请尝试
。var ObjectId = require('mongoose').Types.ObjectId;
Video.findOne({ video: new ObjectId(req.params.video_id) })
答案 1 :(得分:0)
所以我知道我当前的ID在我的数据库中,但是findOne没有找到它。
这是因为video
的类型为Schema.Types.ObjectId
。但是您查询时没有将其强制转换为ObjectId
。
可能会导致的铸造
'use strict';
let mongoose = require('mongoose');
Video.findOne({
video: mongoose.Types.ObjectId(req.params.video_id)
}).then(video => {
res.json(video);
}).catch(err => {
res.status(404).json({
video: "Video doesn't exist"
});
});