Mongoose:(CastError)转换为 [ObjectId] 的值失败

Posted

技术标签:

【中文标题】Mongoose:(CastError)转换为 [ObjectId] 的值失败【英文标题】:Mongoose: (CastError) Cast to [ObjectId] failed for value 【发布时间】:2021-09-05 21:21:05 【问题描述】:

我有一个小问题,我一直在尝试解决一段时间,尽管几乎到处都在网上搜索,但我找不到解决问题的方法。

我有 2 个猫鼬模式。一个“发布”模式和一个“标签”模式。

const postSchema = new Schema(
    creator:type:mongoose.Types.ObjectId, required:true, ref:'User',
    type:type:String, required:true,
    title:type:String, maxlength:14,
    description:type:String, maxlength:1140,
    content:type:String,
    tags:[type:mongoose.Types.ObjectId, ref:'Tag'],
    date:type:Date,
  );

 const tagSchema = new Schema(
    name:type:String, required:true, unique:true,
    bgImages:[type:String],
    posts:[type:mongoose.Types.ObjectId, ref:'Post'],
  );

当我创建一个新帖子时,我希望能够向帖子中的标签数组添加多个标签,所以我尝试做的是找到用户选择的标签的 ID 并将 ID 的数组发送到POST 请求。

这是我得到的确切错误: 'tags.0': CastError: Cast to [ObjectId] failed for value "["60d193ab04caf9336cc9169b,60d193b504caf9336cc9169c"]" (type string) at path "tags.0"

这两个 ID 都存在于 Tag 集合中。如果我在请求中只发送一个 Id,它可以工作,但如果我发送一组 Id,它就不行。

我想到的是它发送一个由单个字符串组成的数组,而不是一个字符串数组(其中每个字符串都是 ID)。

有人可以帮我找出问题所在吗?非常感谢。

【问题讨论】:

【参考方案1】:

发现问题。我认为这是因为我发送的是一个包含单个字符串的数组,而不是一个原子字符串数组。

不得不用“,”分割数组来解决问题。

【讨论】:

以上是关于Mongoose:(CastError)转换为 [ObjectId] 的值失败的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose:CastError:对于模型“”的路径“_id”处的值“”,转换为 ObjectId 失败

Mongoose:CastError:在路径“_id”处为值“[object Object]”转换为 ObjectId 失败

CastError:TypeScript REST 和 Mongoose 中路径“_id”处值“1225589795”的值“1225589795”转换为 ObjectId 失败

mongoose.js CastError:在路径“未定义”处为值“[object Object]”转换为数字失败

mongoose CastError:在路径“apps”处为值“[object Object]”转换为未定义失败

Mongoose CastError:模型“Task”的路径“_listId”的值“:listId”转换为 ObjectId 失败