猫鼬错误:尚未为模型"name"注册架构。使用猫鼬模型(名称,模式)



我有两个模型。在第一个模型中,我有一个虚拟字段,应该由另一个填充(一对多关系)。它不工作。

模型:

import { Schema, model } from 'mongoose';
const vendorSchema = new Schema<VendorProps>({
company_name: String,
product_type: String,
}, {
timestamps: true,
toJSON: { virtuals: true },
toObject: { virtuals: true },
});
vendorSchema.virtual('campaigns', {
ref: 'campaign',
foreignField: 'vendor_id',
localField: '_id'
});
const Vendor = model<VendorProps>(
'Vendor',
vendorSchema
);
export default Vendor;

模式两种:

import { Schema, model } from 'mongoose';
const campaignSchema = new Schema<CampaignProps>({
lead_volume: Number,
cost_per_credit_score: String,
vendor_id: {
type: Schema.ObjectId,
ref: 'Vendor',
},
}, {
timestamps: true,
toJSON: { virtuals: true },
toObject: { virtuals: true },
});
const Campaign = model<CampaignProps>(
'campaign',
campaignSchema
);
export default Campaign;

(我省略了Props,因为它们是.ts文件)

index文件中,我导入了引用控制器方法的路由:

import VendorModel from '../models/vendor';
await VendorModel.findById(id).populate('campaigns').exec();

我至少有12个其他类似的模型,它们的工作方式完全相同。(当我创建这两个+控制器,我只是字面上复制/粘贴和修改名称)但是由于某种原因,当我通过ID查询Vendor类型时,它给了我标题错误。

我完全被难住了。(我在SO上查看了其他一些类似的线程,但没有一个可以帮助我,因为我认为我的代码实际上没有任何问题,它应该工作)

任何想法?

所以我不小心弄清楚了为什么这不起作用。Campaign模型在任何地方都不是used(除了在填充查询中)。

创建后,我将模型添加到现有的路由(作为查询),代码工作。所以基本上这个模型不是"registered";所以模型1引用了一个不存在的模型(如果你问猫鼬,我们就是)。

tl:博士;为了使虚拟字段工作,您必须在代码中有对模型的引用。

最新更新