#node.js #typescript #mongoose #typegoose
Вопрос:
я новичок в выборе типа , я пытаюсь заполнить поле категории с помощью ProductModel.find().populate («категория»), но программа выдает ошибку: схема не была зарегистрирована для модели «ссылка».nUse мангуст.модель(имя, схема) Могу ли я знать, чего мне не хватает?
Моя модель продукта:
import { getModelForClass, prop, Ref, plugin } from '@typegoose/typegoose';
import { Category } from './category.model';
export class Product {
@prop({ required: true })
public name?: string;
@prop({ default: null })
public photo?: string;
@prop({ default: 0 })
public rating?: number;
@prop({ ref: () => Category, required: true })
public category?: Ref<Category>;
}
export default getModelForClass(Product);
Модель моей категории:
import { getModelForClass, prop } from '@typegoose/typegoose';
export class Category {
@prop({ required: true })
public name?: string;
@prop({ default: null })
public photo?: string;
}
export default getModelForClass(Category);
Я использую первый выбор шрифта, поэтому мне нужно хорошее объяснение для этого.
Комментарии:
1. пожалуйста, укажите, какие версии вы использовали (typescript, mongoose, typegoose), а также соблюдали ли вы все требования к typegoose? (наиболее распространенной причиной этой ошибки является отсутствие
es6
настроек в tsconfig дляtarget
) см. typegoose.github.io/typegoose/docs/guides/…2. @hasezoey спасибо за вашу помощь, речь шла о es6 в tsconfig
Ответ №1:
Вы скучаете по своим «моделям»?:
import { getModelForClass, prop } from '@typegoose/typegoose';
@modelOptions({ options: { customName: "Category_name" } })
export class Category {
@prop({ required: true })
public name?: string;
@prop({ default: null })
public photo?: string;
}
export default getModelForClass(Category);