我在 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();
如果架构尚未注册,则可能会发生此错误。您可以通过指定要填充的每个路径的模型来解决此问题,如下所示:
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
函数中搜索的值。