CastError:对于模型“Director”的路径“_id”中的值“”,投射到 ObjectId 失败

问题描述

更新

我是 Mongo 和 mongoose 的新手,正在尝试使用 Director 模型填充我的 titlesSchema。

当我向 /titles 发送 GET 请求时,出现以下错误

CastError:对于模型“Director”的路径“_id”中的值“”,转换为 ObjectId 失败 消息格式:未定义, 字符串值: '””', 种类:'对象ID', 价值: '', 路径:'_id', 原因:错误:传入的参数必须是单个 12 字节的字符串或 24 个十六进制字符的字符串

ValidationError:标题验证失败:director:在路径“director”处为值“”强制转换为 ObjectId 失败

我认为这是因为导演在数据集中的许多情况下都是“”。我想说当导演键是:“”时,它不应该创建一个 id,但我还没有想出如何做到这一点。有什么建议吗?

我的代码

const titlesSchema = new mongoose.Schema({
  show_id: Number,title: String,director: {
    type: mongoose.Schema.Types.ObjectId,ref: 'Director'
  },cast: String,country: String,date_added: String,release_year: Number,rating: String,duration: String,listed_in: String,description: String,type: String
})

const Title = mongoose.model('Title',titlesSchema)

const Director = mongoose.model('Director',{ 
  name: String
})


// return all titles:

app.get('/titles',async (req,res) => {
  const titles = await Title.find().populate('director')
  res.json(titles)
})

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)