umbot
    Preparing search index...

    Адаптер для работы с базой данных mongodb

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    _appContext: AppContext<IMongoDbInfo> = ...

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

    _dbOptions?: IAppDB

    Дополнительные опции для работы базы данных

    dbFormat: string = 'mongodb'

    Формат базы данных

    Methods

    • Protected

      Выполняет до двух попыток подключения с проверкой живучести соединения. Каждая попытка создаёт НОВЫЙ клиент — после неудачного connect() MongoClient переходит в состояние "closed" и его нельзя переиспользовать.

      Parameters

      • mongo: __module

        Лениво загруженный модуль mongodb

      • options: MongoClientOptions

        Опции подключения

      Returns Promise<{ client: MongoClient; connect: MongoClient }>

      Пара {client, connect} при успехе

      Последняя ошибка, если все попытки провалились

    • Protected

      Формирует опции подключения к MongoDB из конфига приложения.

      Parameters

      • mongo: __module

        Лениво загруженный модуль mongodb

      Returns MongoClientOptions

      Опции клиента MongoDB

    • Protected

      Закрывает предыдущее соединение, если оно было сохранено в databaseInfo. Это предотвращает утечку соединений при повторных вызовах connect().

      Returns Promise<void>

    • Выполняет INSERT-запрос.

      Parameters

      • insertData: IQuery

        Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.

      Returns Promise<boolean>

      true при успешной вставке, иначе false (нет данных/первичного ключа, запрещённый запрос, ошибка драйвера)

    • Protected

      Лениво загружает модуль mongodb (один раз) и кэширует его.

      mongodb объявлен как опциональная peer-зависимость: он нужен только тем, кто реально использует MongoAdapter. Статический import в шапке файла заставил бы Node требовать пакет у всех, кто импортирует umbot/plugins, даже при использовании только FileAdapter. Поэтому модуль подгружается динамически в момент первого подключения.

      Returns Promise<__module>

      Загруженный модуль mongodb

      Если пакет не установлен — понятная ошибка с инструкцией по установке

    • Выполняет DELETE-запрос.

      Parameters

      • removeData: IQuery

        Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.

      Returns Promise<boolean>

      true при успешном удалении, иначе false (нет данных, запрещённый запрос, ошибка драйвера)

    • Protected

      Сохранение логов

      Parameters

      • errorMsg: string

        Текст ошибки

      • Optionalerror: Error

        Объект ошибки (опционально)

      Returns void

    • Выполняет SELECT-запрос.

      Parameters

      • selectData: IQuery

        Дополнительная информация для запроса. Содержит информацию о таблице и структуре.

      • where: IQueryData | null

        Сам запрос

      • isOne: boolean = false

        Определяет нужно ли вернуть только 1 найденную запись, либо отдать все доступные данные.

      Returns Promise<IModelRes<IDataValue>>

      Promise — результат выборки ({ status: true, data } при успехе, { status: false, error } при ошибке/запрете)

    • Выполняет UPDATE-запрос.

      Parameters

      • updateData: IQuery

        Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.

      Returns Promise<boolean>

      true при успешном обновлении, иначе false (нет данных/первичного ключа, запрещённый запрос, ошибка драйвера)

    • Закрывает подключение к определенной таблице. В MongoDB нет концепции "закрытия таблицы". Метод close() закрывает всё соединение с базой.

      Parameters

      • tableName: string

        Имя таблицы

      Returns Promise<void>

    • Подключается к MongoDB.

      Поведение:

      • При неудачном connect() или «мёртвом» соединении создаёт новый MongoClient и выполняет до двух попыток подключения.
      • Живучесть соединения проверяется ping-командой (isConnectedWith).
      • При ошибке пишет причину в error_log и возвращает false.

      Returns Promise<boolean>

      true — подключение активно, false — ошибка подключения.

    • Закрывает все подключения к БД. Все процессы завершаются; Mongo при закрытии ничего не сохраняет (в отличие от FileAdapter).

      Returns Promise<void>

    • Экранирует строку для безопасного использования в запросах.

      ⚠️ По умолчанию просто приводит значение к строке. Если ваша БД требует экранирования (например, SQL), обязательно переопределите этот метод.

      Parameters

      • str: string | number

        Экранируемая строка

      Returns string

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

    • Удобный метод для извлечения данных из результата запроса. Проверяет res.status и возвращает res.data только при успехе.

      Используется в моделях и контроллерах для безопасного доступа к данным.

      Parameters

      Returns IDbResult<unknown> | null

      Данные из res.data при status = true, иначе null

    • Выполняет INSERT-запрос.

      Внутри себя вызывает this._insert, основное отличие в том, что в данном методе пишутся метрики.

      Parameters

      • insertData: IQuery

        Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.

      Returns Promise<boolean>

      true при успешной вставке, иначе false

    • Проверяет, установлено ли соединение, для конкретного клиента.

      Parameters

      • client: MongoClient

        Клиент, у которого проверяем соединение

      Returns Promise<boolean>

      Promise — true, если команда ping выполнена успешно

    • Выполняет произвольный запрос через callback.

      Выполняет this._query напрямую. Метрики времени выполнения не записываются (в отличие от select/insert/update/remove).

      Parameters

      • callback: TQueryCb<MongoClient, Db>

        функция обработчик

      Returns Promise<unknown>

    • Выполняет DELETE-запрос.

      Внутри себя вызывает this._remove, основное отличие в том, что в данном методе пишутся метрики.

      Parameters

      • removeData: IQuery

        Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.

      Returns Promise<boolean>

      true при успешном удалении, иначе false

    • Сохраняет запись: вставляет новую или обновляет существующую. Логика:

      • Если isNew === true → перед insert ключи условия мержатся в данные (saveData.data = {...data, ...query}) и вызывается insert
      • Иначе → сначала делается selectOne по saveData.query, и если запись найдена — вызывается update, иначе — insert (тоже с мерджем ключей условия в данные)

      Parameters

      • saveData: IQuery

        Данные для запроса. Включает как запрос, так и сами данные

      • isNew: boolean

        Флаг, говорящий о том, что точно происходит добавление новой записи

      Returns Promise<boolean>

      true при успешном сохранении, иначе false

    • Выполняет SELECT-запрос.

      Внутри себя вызывает this._select, основное отличие в том, что в данном методе пишутся метрики.

      Parameters

      • selectData: IQuery

        Дополнительная информация для запроса. Содержит информацию о таблице и структуре.

      • where: IQueryData | null

        Сам запрос

      • isOne: boolean

        Определяет нужно ли вернуть только 1 найденную запись, либо отдать все доступные данные.

      Returns Promise<IModelRes<IDataValue>>

      Результат SELECT-запроса (IModelRes)

    • Выполняет SELECT с ограничением до одной записи.

      Parameters

      • selectData: IQuery

        Дополнительные данные для запроса

      • where: IQueryData | null

        Сам запрос (условие выборки). При null или undefined вернётся null

      Returns Promise<IModelRes<IDataValue> | null>

      IModelRes с результатом выборки (одна запись — в data), либо null, если условие не передано. При отсутствии записей возвращается { status: false }.

    • Выполняет UPDATE-запрос.

      Внутри себя вызывает this._update, основное отличие в том, что в данном методе пишутся метрики.

      Parameters

      • updateData: IQuery

        Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.

      Returns Promise<boolean>

      true при успешном обновлении, иначе false

    • Валидация запросов. Правила валидации (query.rules) применяются к element — метод мутирует и возвращает его. При element === null возвращается {}.

      Parameters

      • query: IQuery

        Запрос: источник правил валидации (query.rules)

      • element: IQueryData | null

        Валидируемый элемент данных

      Returns IQueryData

      Валидированный элемент; при element === null — {}