Наберите goose реквизит не сохраняется - PullRequest
0 голосов
/ 05 августа 2020

У меня проблема с использованием типа goose, у меня есть такой класс:

class UserType1 extends Typegoose
      implements User{
    @prop({required: true, unique: true})
    _username: string | undefined;
    @prop({required: true})
    _password: string | undefined;

    constructor(username:string, password: string){
      this._username = username;
      this._password = password;
    }
    
    async saveToDB(): Promis<void>{ // This method is refrenced inside User Interface
       const model: ModelType<UserType1> = getModelForClass(UserType1);
       await model.create(this);
    }

    <Other methods inside class>
}

Затем я использую приведенную выше последовательность кода, например:

  const u: User = new UserType1("username", "password");
  u.saveToDB();

, затем, новая запись сохраняется внутри коллекции UserType1 , но она пуста. внутри записи не сохраняются ни _username, _password, ни другие реквизиты. Внутри него есть только _id и переменная с именем «__v» (откуда я не знаю, откуда она взялась.

Ответы [ 2 ]

0 голосов
/ 24 августа 2020

Хорошо, я оставил свой код и начал новый чистый, и он работал отлично, поэтому я начал исследовать разницу между кодами, пока не обнаружил эту небольшую проблему с импортом пакетов, и она не была связана с моим кодом: вместо делать

import {prop} from "@typegoose/typegoose"

Я делал:

import {prop} from "typegoose"

, поскольку он не выдавал мне никаких предупреждений и работал без ошибок, я никогда не понимал, что это проблема. Надеюсь на это он

0 голосов
/ 05 августа 2020

из того, что я получил в качестве ответа в комментариях об использовании неподдерживаемой версии, я бы рекомендовал написать ваш пример таким образом:

class UserType1 implements User {
  @prop({ required: true, unique: true })
  public _username!: string;
  @prop({ required: true })
  public _password!: string;

  static async default(this: ReturnModelType<typeof UserType1>, username: string, password: string): Promise<void> {
    await this.create({ _username: username, _password: password });
  }

  // <Other methods inside class>
}

const UserModel = getModelForClass(UserType1);

// somewhere in an async code block
await UserModel.default("user1", "somePassword");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...