MissingSchemaError:模式尚未为模型注册,但有时可以获取数据

问题描述 投票:0回答:1

我在 Nextjs 中使用 Mongoose。我有三个模型:演员、制片人和类别。一个名为 Film 的模型将所有这些模型放在一个数组中。我使用 ref: 'Actor'(像这样休息)作为现场演员。当我尝试从 MongoDB 检索数据并将其填充到查询中时,出现错误:MissingSchemaError:架构尚未为模型注册... 但有时我可以成功检索数据。我不知道为什么或如何。有人可以帮助我吗?

这是我的代码:

演员模型

  import { Schema, model, models } from "mongoose";
  const ActorSchema = new Schema({
  name: {
    type: String,
  },
  info: {
    type: String
  },
  avatar: {
    type: String,
  },
  slug: {
    type: String,
  }
})

const Actor = models.Actor || model("Actor", ActorSchema)

export default Actor;

电影中的模型:

  actor: [{
     type: ObjectId,
     ref: 'Actor'
 }],

查询:

  films = await Film.findOne({slug: params.id}).populate(['actor','category','producer']).exec();
mongoose mongoose-schema next.js13
1个回答
0
投票

如果架构尚未注册,则可能会发生此错误。您可以通过指定要填充的每个路径的模型来解决此问题,如下所示:

const films = await Film.findOne({slug: req.params.slug})
.populate({ path: 'actor', model: ActorModel })
.populate({ path: 'category', model: CategoryModel})
.populate({ path: 'producer', model: ProducerModel});

确保您为要填充的每个字段使用正确的

{path: 'fieldname', model: ModelName}
。在没有看到其余代码的情况下,我假设
req.params.slug
作为在
findOne
函数中搜索的值。

© www.soinside.com 2019 - 2024. All rights reserved.