当前位置: 首页 > 知识库问答 >
问题:

对于模型“post”的路径“_id”处的值“comments”,转换为ObjectId失败

卢志业
2023-03-14

Comments是嵌套在Post架构中的数组。我想通过推送一个新的评论到评论数组更新相应的帖子。但是得到了错误:CastError:对于模型“post”的路径“_id”处的值“comments”,向ObjectId的强制转换失败

  1. 阅读相关帖子
  2. 尝试使用“mongoose.types.objectid”,但不起作用
  3. 猫鼬版^5.5.4
  4. 我在这里使用的所有ID都是有效的
const PostSchema = new Schema({
    ...
    comments: [
        {
            user: {
                type: Schema.Types.ObjectId,
                ref: 'user',
            },
            body: {
                type: String,
                required: [true, 'Content required'],
            },
        }
    ],
   ...
});
PostRouter.put('/posts/comments', (req, res) => {
    const { id } = req.query;
    const userID = req.body.user;
    const body = req.body.body;
    const comment = {
        user: userID,
        body: body,
    };

    Posts
        .update({ _id: id }, { $push: { comments: comment }})
        .then(result => {
            res.status(200).json(result.ok);
        })
        .catch(err => console.log(err));
});
const senderID = req.query.sender;
const recipientID = req.query.recipient; 

Users .update({ _id: recipientID }, { $push: { friends: senderID }}) 
.then(result => res.status(200).json(result.ok)) 
.catch(err => console.log(err)); 

我认为问题出在“comments”数组中,因为“comment.user”是从我的“user”模式中引用的。不知道如何解决这个带有强制转换错误的嵌套问题。

共有1个答案

洪光霁
2023-03-14

如果userID和_id是有效的,objectid是冗余的。

PostRouter.put('/posts/comments', (req, res) => {
const { id } = req.query;
const userID = req.body.user;
const body = req.body.body;
const comment = {
    user: userID,
    body: body,
};

Posts
    .update({ _id: id }, { $push: { comments: comment }})
    .then(result => {
        res.status(200).json(result.ok);
    })
    .catch(err => console.log(err));
});
 类似资料:
  • 嘿,伙计们真的需要一些关于删除路由的帮助。我正在使用RESTful路由,尝试遵循约定,添加删除路由时,我得到错误: CastError:模型"Blog"的路径"_id"处的值"X"转换为ObjectId失败 我已经在stackoverflow上搜索了这个问题,我能想到的最好的版本是猫鼬有一个错误。我把它回滚到V4.10.0,仍然在处理这个问题。我的代码如下:

  • 我看到了几个帖子与类似的我但我仍然得到同样的错误 这是我的用户模式 我的路线 我的应用程序。js 这是我的护照。我正在使用本地护照 passport可以将用户保存到数据库中 模型“用户”的路径“_id”处的值“586cc8b3ea780c071bbe2469”转换为ObjectId失败 我已经构建了两个应用程序,它们使用passport oauth,与上面显示的方式完全相同。所以我不知道为什么我会

  • 我的控制器obter_todos_precos只是一个console.log,没有使用任何模型,但我得到以下错误: 为什么我会有这种行为?

  • 前言:我对猫鼬/Express的工作相对来说是新手。 我试图制作一个应用程序,其中一个名为“space”的猫鼬模式中有一个名为“posts”的数组。数组的内容是对另一个名为“POST”的猫鼬模式的ObjectId引用。然而,每次我对应该发送回我的空间和其中的帖子的路线提出GET请求时,我都会得到一个严重的错误。此外,我的帖子没有填充我的空间。 错误:CastError:对于模型“space”的路径

  • 当我发送后请求我得到以下错误: 对于模型“用户”的路径“\u id”处的值“2”,转换为ObjectId失败 有什么建议吗? 提前感谢!!!

  • 我希望有人能帮我找出我在这里做错了什么。我一直在寻找,我可以找到很多类似的问题,但没有一个我足够聪明来解决我的问题。我得到以下错误: CastError:对于模型“customer”的路径“\u id”处的值“customers”,转换为ObjectId失败 它以前是有效的,我设法打破了它,我解开了所有我认为我改变了的东西,我仍然得到了错误。 这是我的模式: 我的路线: 和我的控制器: 此外,以下