我有一个项目模型和一个类别模型。
项目模型具有对类别模型的引用(objectid)。
我正在编写代码来获取特定类别中的项目。
因此,我将类别的id作为参数(字符串类型)提供给服务,
然后写“returnthis.itemmodel.find({category:id}).exec();”。
其中,“类别”是对类别模型的引用,
“id”是传递给api调用的id。
我得到错误“没有重载匹配此调用”。
我怎样才能解决这个问题?
项目架构
export type ItemDocument = Item & Document;
@Schema({ timestamps: true })
export class Item {
@Prop()
name_en: string;
@Prop({ type: mongoose.Schema.Types.ObjectId, ref: 'Category' })
category: Category;
}
export const ItemSchema = SchemaFactory.createForClass(Item);
类别模式
export type CategoryDocument = Category & mongoose.Document;
@Schema({ timestamps: true })
export class Category {
@Prop()
name_en: string;
}
export const CategorySchema = SchemaFactory.createForClass(Category);
类别.服务.ts
@Injectable()
export class CategoryService {
constructor(
@InjectModel(Category.name)
private categoryModel: mongoose.Model<CategoryDocument>,
@InjectModel(Item.name)
private readonly ItemModel: mongoose.Model<ItemDocument>,
) {}
findOneCatItems(id: string) {
return this.ItemModel.find({category: id}).exec(); --> Error Line
}
}
1条答案
按热度按时间daupos2t1#
你在这里提到
项目模型具有对类别模型的引用(objectid)。
但是
category
财产Item
模型被键入为Category
.执行此操作时:
this.ItemModel.find({category: id}).exec();
您提供的是一种ObjectId
其中一种Category
这是意料之中的事。由于未在项目上保存整个类别对象,请将项目类中的定义更改为:
注意:如果你通过
id
作为一根绳子this.ItemModel.find({category: id}).exec();
,然后将category作为字符串而不是objectid键入即可