Схема не была зарегистрирована для модели «ссылка».nUse мангуст.модель(имя, схема)

#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);