umbot
    Preparing search index...

    Class Model<TState>Abstract

    Абстрактный класс для создания моделей данных Предоставляет базовую функциональность для работы с данными в базе данных

    class UserModel extends Model<UserState> {
    // Определение правил валидации
    rules(): IModelRules[] {
    return [
    { name: ['username'], type: 'string', max: 50 },
    { name: ['age'], type: 'integer' }
    ];
    }

    // Определение меток атрибутов
    attributeLabels(): UserState {
    return {
    id: 'ID',
    username: 'Имя пользователя',
    age: 'Возраст'
    };
    }

    // Определение имени таблицы
    tableName(): string {
    return 'users';
    }
    }

    // Использование модели
    const user = new UserModel();
    user.state.username = 'John';
    user.state.age = 25;
    await user.save();

    Type Parameters

    • TState extends IModelState

      Тип состояния модели Model

    Hierarchy (View Summary)

    Index

    Constructors

    • Создает новый экземпляр модели. Инициализирует контроллер базы данных и состояние модели

      Type Parameters

      Parameters

      • appContext: AppContext

      Returns Model<TState>

      const user = new UserModel();
      

    Properties

    _appContext: AppContext

    Контекст приложения.

    queryData: IQuery

    Объект для хранения параметров запроса. Содержит условия поиска и данные для обновления

    startIndex: number = 0

    Начальный индекс для итерации по данным. Используется при инициализации модели из массива

    state: Partial<TState> = {}

    Состояние модели. Содержит текущие значения всех атрибутов

    // Установка значений
    this.state.username = 'John';
    this.state.age = 25;

    // Получение значений
    console.log(this.state.username);

    Methods

    • Добавляет новую запись в базу данных

      Returns Promise<boolean>

      Promise с результатом операции

      model.state.name = 'John';
      await model.add();
    • Определяет метки атрибутов модели Должен быть реализован в дочерних классах

      Returns TState

      Объект с метками атрибутов

      attributeLabels(): UserState {
      return {
      id: 'ID',
      username: 'Имя пользователя',
      age: 'Возраст'
      };
      }
    • Закрывает соединение с базой данных

      Returns void

      model.destroy();
      
    • Экранирует специальные символы в строке

      Parameters

      • text: string | number

        Текст для экранирования

      Returns string

      Экранированная строка

      const safe = model.escapeString("O'Connor");
      
    • Определяет имя первичного ключа таблицы. Ищет поле с меткой 'id' или 'ID'

      Returns TKey

      Имя первичного ключа или null

    • Инициализирует модель данными

      Parameters

      • data: IDbResult<unknown> | IDbResult<unknown>[] | null

        Данные для инициализации

      Returns void

      model.init({
      id: 1,
      username: 'John',
      age: 25
      });
    • Проверяет состояние подключения к базе данных

      Returns boolean | Promise<boolean>

      Promise - true если подключение активно

      const isConnected = await model.isConnected();
      if (isConnected) {
      // Выполнение операций с базой данных
      }
    • Выполняет произвольный запрос к базе данных

      Parameters

      • callback: TQueryCb

        Функция обратного вызова для выполнения запроса

      Returns unknown

      Результат выполнения запроса

      const result = await model.query(async (client, db) => {
      const collection = db.collection('users');
      return await collection.aggregate([
      { $match: { age: { $gt: 18 } } },
      { $group: { _id: '$city', count: { $sum: 1 } } }
      ]).toArray();
      });
    • Удаляет запись из базы данных

      Returns Promise<boolean>

      Promise - true если удаление успешно

      await model.remove();
      
    • Определяет правила валидации для полей модели Должен быть реализован в дочерних классах

      Returns IModelRules[]

      Массив правил валидации

      rules(): IModelRules[] {
      return [
      { name: ['username'], type: 'string', max: 50 },
      { name: ['age'], type: 'integer' }
      ];
      }
    • Сохраняет данные модели в базу данных Если запись существует - обновляет, иначе создает новую

      Parameters

      • isNew: boolean = false

        Флаг создания новой записи

      Returns Promise<boolean>

      Promise с результатом операции

      model.state.name = 'John';
      await model.save(); // Обновление существующей записи
      await model.save(true); // Создание новой записи
    • Выполняет поиск записи по первичному ключу

      Returns Promise<ISelectOneModelRes>

      Promise с результатом запроса

      const result = await model.selectOne();
      if (result.status) {
      model.init(result.data);
      }
    • Определяет имя таблицы в базе данных Должен быть реализован в дочерних классах

      Returns string

      Имя таблицы

      tableName(): string {
      return 'users';
      }
    • Обновляет существующую запись в базе данных

      Returns Promise<boolean>

      Promise с результатом операции

      model.state.name = 'John';
      await model.update();
    • Выполняет валидацию данных модели Может быть переопределен в дочерних классах

      Returns void

      validate(): void {
      if (!this.state.username) {
      throw new Error('Username is required');
      }
      }
    • Выполняет произвольный запрос к базе данных

      Parameters

      • where: string | IQueryData = '1'

        Условия запроса

      • isOne: boolean = false

        Флаг выборки одной записи

      Returns Promise<IModelRes<IDataValue>>

      Promise с результатом запроса

    • Выполняет запрос с выборкой одной записи

      Parameters

      • where: string | IQueryData = '1'

        Условия запроса

      Returns Promise<boolean>

      Promise - true если запись найдена

      const found = await model.whereOne({ id: 1 });
      if (found) {
      console.log('Record found');
      }