Optionaloptions: IAppDBProtected_appContextКонтекст приложения
Protected Optional_dbOptionsДополнительные опции для работы базы данных
Формат базы данных
Protected_attemptConnectProtectedВыполняет до двух попыток подключения с проверкой живучести соединения. Каждая попытка создаёт НОВЫЙ клиент — после неудачного connect() MongoClient переходит в состояние "closed" и его нельзя переиспользовать.
Лениво загруженный модуль mongodb
Опции подключения
Пара {client, connect} при успехе
Protected_buildConnectOptionsProtectedФормирует опции подключения к MongoDB из конфига приложения.
Лениво загруженный модуль mongodb
Опции клиента MongoDB
Protected_closePreviousClientProtectedЗакрывает предыдущее соединение, если оно было сохранено в databaseInfo. Это предотвращает утечку соединений при повторных вызовах connect().
Выполняет INSERT-запрос.
Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.
true при успешной вставке, иначе false (нет данных/первичного ключа, запрещённый запрос, ошибка драйвера)
Protected_loadMongoProtectedЛениво загружает модуль mongodb (один раз) и кэширует его.
mongodb объявлен как опциональная peer-зависимость: он нужен только тем,
кто реально использует MongoAdapter. Статический import в шапке файла
заставил бы Node требовать пакет у всех, кто импортирует umbot/plugins,
даже при использовании только FileAdapter. Поэтому модуль подгружается
динамически в момент первого подключения.
Загруженный модуль mongodb
Выполняет произвольный запрос через callback.
функция обработчик
Выполняет DELETE-запрос.
Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.
true при успешном удалении, иначе false (нет данных, запрещённый запрос, ошибка драйвера)
Protected_saveLogProtectedСохранение логов
Текст ошибки
Optionalerror: ErrorОбъект ошибки (опционально)
Выполняет SELECT-запрос.
Дополнительная информация для запроса. Содержит информацию о таблице и структуре.
Сам запрос
Определяет нужно ли вернуть только 1 найденную запись, либо отдать все доступные данные.
Promise
Выполняет UPDATE-запрос.
Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.
true при успешном обновлении, иначе false (нет данных/первичного ключа, запрещённый запрос, ошибка драйвера)
Закрывает подключение к определенной таблице. В MongoDB нет концепции "закрытия таблицы". Метод close() закрывает всё соединение с базой.
Имя таблицы
Подключается к MongoDB.
Поведение:
isConnectedWith).false.true — подключение активно, false — ошибка подключения.
Закрывает все подключения к БД. Все процессы завершаются; Mongo при закрытии ничего не сохраняет (в отличие от FileAdapter).
Экранирует строку для безопасного использования в запросах.
⚠️ По умолчанию просто приводит значение к строке. Если ваша БД требует экранирования (например, SQL), обязательно переопределите этот метод.
Экранируемая строка
Экранированная строка
Удобный метод для извлечения данных из результата запроса.
Проверяет res.status и возвращает res.data только при успехе.
Используется в моделях и контроллерах для безопасного доступа к данным.
Данные из res.data при status = true, иначе null
Метод инициализации плагина.
Вызывается один раз при подключении через bot.use().
Контекст приложения
Выполняет INSERT-запрос.
Внутри себя вызывает this._insert, основное отличие в том, что в данном методе пишутся метрики.
Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.
true при успешной вставке, иначе false
Проверяет, установлено ли соединение с БД.
ProtectedisConnectedWithПроверяет, установлено ли соединение, для конкретного клиента.
Клиент, у которого проверяем соединение
Promise
Выполняет произвольный запрос через callback.
Выполняет this._query напрямую. Метрики времени выполнения не записываются (в отличие от select/insert/update/remove).
функция обработчик
Выполняет DELETE-запрос.
Внутри себя вызывает this._remove, основное отличие в том, что в данном методе пишутся метрики.
Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.
true при успешном удалении, иначе false
Сохраняет запись: вставляет новую или обновляет существующую. Логика:
isNew === true → перед insert ключи условия мержатся в данные
(saveData.data = {...data, ...query}) и вызывается insertselectOne по saveData.query,
и если запись найдена — вызывается update, иначе — insert
(тоже с мерджем ключей условия в данные)Данные для запроса. Включает как запрос, так и сами данные
Флаг, говорящий о том, что точно происходит добавление новой записи
true при успешном сохранении, иначе false
Выполняет SELECT-запрос.
Внутри себя вызывает this._select, основное отличие в том, что в данном методе пишутся метрики.
Дополнительная информация для запроса. Содержит информацию о таблице и структуре.
Сам запрос
Определяет нужно ли вернуть только 1 найденную запись, либо отдать все доступные данные.
Результат SELECT-запроса (IModelRes)
Выполняет SELECT с ограничением до одной записи.
Дополнительные данные для запроса
Сам запрос (условие выборки). При null или undefined вернётся null
IModelRes с результатом выборки (одна запись — в data), либо null, если условие не передано. При отсутствии записей возвращается { status: false }.
Выполняет UPDATE-запрос.
Внутри себя вызывает this._update, основное отличие в том, что в данном методе пишутся метрики.
Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.
true при успешном обновлении, иначе false
Валидация запросов. Правила валидации (query.rules) применяются к element — метод мутирует и возвращает его. При element === null возвращается {}.
Запрос: источник правил валидации (query.rules)
Валидируемый элемент данных
Валидированный элемент; при element === null — {}
Адаптер для работы с базой данных mongodb