值转换为ObjectId失败|Mongodb错误

qacovj5a  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(137)

我尝试只获取用户的帖子,我使用的代码是:

router.get("/:username", async (req, res) => {
  try {
    const user = await User.findOne({ username: req.params.username });
    const posts = await Post.find({ userId: user._id });
    res.status(200).json(posts);
  } catch (err) {
    res.status(500).json(err);
  }
});

我正在使用Postman测试GET localhost:6000/posts/admin,每次我尝试使用它时,它都会出现此错误

"name": "CastError",
"message": "Cast to ObjectId failed for value \"admin\" (type string) at path \"_id\" for model \"Post\""

这是我在Monogodb的帖子集合

这是Mongodb中的用户集合

我不知道我在这里错过了什么,我只是想链接职位/:用户名只显示此用户名的职位

j9per5c4

j9per5c41#

const user = await User.findOne({ username: req.params.username });

此查询查找user,但user._id作为对象出现,但在数据库中userId保存为字符串,因此您可能应该将userId保存为对象

const blogSchema = new Schema({
    title: {
        type: String,
        required: true,
    },
    content: {
        type: String,
        required: true,
    },
    userId: { type: mongoose.Types.ObjectId, ref: 'user' }, //Example
});

相关问题