【问题标题】:Mongoose: (CastError) Cast to [ObjectId] failed for valueMongoose:(CastError)转换为 [ObjectId] 的值失败
【发布时间】: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)。

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

【问题讨论】:

    标签: arrays mongoose objectid


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-03-14
      • 2022-01-23
      • 2020-08-25
      • 2017-05-26
      • 2021-06-27
      • 2015-07-16
      • 2021-01-31
      • 2013-03-24
      • 2014-06-20
      相关资源
      最近更新 更多