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

CastError:对于路径“\u id”处的值“”,转换为ObjectId失败

司空俊雅
2023-03-14

好吧,我看到这里有一些这样的帖子,但他们没有帮助我。。。

让我描述一下我的问题:

我有两个模式

var A = new Schema({
   someAttribut: {type: String},
   b: {type: ObjectId, ref:'B'}
});

var B = new Schema({
   someAttribut2: {type: Boolean, 'default': false'}
});

现在我已经有了一个B对象,我想创建一个a对象。

所以我这样做:

var a = new A(req.aFromClient); // {_id:null, someAttribute:'123', b:null}
//load b from Database ... 
a.b = existingBFromDatabase; // {_id: 'Sb~Õ5ÙÐDâb', someAttribute2: false}

b对象是从我的monogDB加载的。调试器为我的b显示了一个有效的ObjectId(53627ed535d9d04416e26218或Sb~Õ5ÙÐDáb)。

但是,当我保存新的A-Object时,会出现错误:“CastError:Cast to ObjectId在路径“\u id”处的值“”失败”

我不明白为什么我会犯这个错误。首先,我没有在模式中定义id,所以mongoose应该添加它,这似乎是可行的。其次,我认为当我创建一个对象时,mongoose应该生成一个新的ID。

你有什么提议吗?

共有2个答案

吕鸿文
2023-03-14

你应该做:

a.b = existingBFromDatabase._id;

因为mongoose只使用已经存在的对象的id。

阳文轩
2023-03-14

根据代码中的注释,\u id确实有一个值(为null)。因此,您需要从req中删除\u id。aFromClient在从它创建新的文档之前:

delete req.aFromClient._id;
var a = new A(req.aFromClient);

 类似资料:
  • 我试图在一个MEAN堆栈应用程序中处理一个计划。当我调用findOne时,我得到了这个错误: 我就是这样做的: 我注意到,当我把id作为一个字符串(如下所示)时,一切正常。 所以,我控制台: 我一直在尝试我在这里找到的东西,但任何东西都可以帮助我解决这个问题:/

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

  • 嘿,伙计们真的需要一些关于删除路由的帮助。我正在使用RESTful路由,尝试遵循约定,添加删除路由时,我得到错误: CastError:模型"Blog"的路径"_id"处的值"X"转换为ObjectId失败 我已经在stackoverflow上搜索了这个问题,我能想到的最好的版本是猫鼬有一个错误。我把它回滚到V4.10.0,仍然在处理这个问题。我的代码如下:

  • 我正在用node/express/mongo/mongoose构建一个应用程序。我遇到了一个我似乎无法理解的错误,谷歌搜索到目前为止没有任何帮助。 我创建了一个简单的、以猫为主题的示例来重现我遇到的错误。我基本上是通过ObjectId检索一个对象。我正在使用创建对象时自动生成的对象id(作为字符串)。 当我导航到路径localhost:3000/kitty/586d62878fc14d30e0ac

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

  • 我已经四处查看了堆栈溢出,似乎找不到与我的环境相似的错误。我已经尽了最大努力来隔离错误的来源,但没有任何运气。错误如下: CastError:在ObjectId的路径“\u id”处,值“GetGelImages”的转换到ObjectId失败。cast(/mean/node\u modules/mongoose/lib/schema/objectid.js:117:13) 代码遵循以下基本结构:我