@e22m4u/js-repository-mongodb-adapter
v0.8.2
Published
MongoDB адаптер для @e22m4u/js-repository
Downloads
84
Maintainers
Readme
@e22m4u/js-repository-mongodb-adapter
MongoDB адаптер для @e22m4u/js-repository.
Установка
npm install @e22m4u/js-repository-mongodb-adapterОписание
Адаптер предоставляет возможность использовать MongoDB в качестве хранилища
данных для @e22m4u/js-repository. Он автоматически преобразует названия
моделей в названия коллекций, а также выполняет преобразование стандартных
операторов фильтрации в нативные запросы MongoDB.
ObjectId
Взаимодействие с репозиторием происходит с использованием строкового
представления идентификаторов. Адаптер самостоятельно преобразует строки
в ObjectId перед отправкой запросов в базу данных и выполняет обратное
преобразование при получении результатов. Это позволяет работать
с идентификаторами как с обычными строками без необходимости импортировать
ObjectId из драйвера MongoDB.
Источник данных
Источник данных для MongoDB адаптера определяется с помощью метода
defineDatasource экземпляра DatabaseSchema.
Параметры
| название | значение по умолчанию | описание |
|----------|-----------------------|------------------------|
| protocol | 'mongodb' | протокол подключения |
| host | '127.0.0.1' | имя хоста или IP адрес |
| port | 27017 | порт |
| database | 'database' | название базы данных |
| username | undefined | имя пользователя |
| password | undefined | пароль |
Кроме перечисленных выше, адаптер поддерживает все стандартные параметры
MongoClientOptions из официального драйвера MongoDB для NodeJS. Эти
параметры можно передавать напрямую в определении источника данных.
Пример
import {DatabaseSchema} from '@e22m4u/js-repository';
const dbs = new DatabaseSchema();
// объявление источника
dbs.defineDatasource({
name: 'myMongo', // название источника
adapter: 'mongodb', // имя адаптера
// параметры
host: '127.0.0.1',
port: 27017,
database: 'myDatabase',
});
// объявление модели
dbs.defineModel({
name: 'user', // название модели
datasource: 'myMongo', // используемый источник
properties: { // поля модели
name: 'string',
surname: 'string',
},
});
// получение репозитория и создание документа
const userRep = dbs.getRepository('user');
const user = await userRep.create({name: 'John', surname: 'Doe'});
console.log(user);
// {
// id: '64f3454e5e0893c13f9bf47e', // id является строкой
// name: 'John',
// surname: 'Doe',
// }Ограничения
Первичный ключ.
Свойство, выступающее в роли первичного ключа, должно иметь названиеidили_id. Использование других названий для первичного ключа не поддерживается.Автогенерация идентификатора.
Автоматическая генерацияObjectIdпри создании нового документа работает только для свойств с типомstringилиany. Для других типов данных значение первичного ключа необходимо указывать вручную.
Преобразование операторов
Адаптер преобразует стандартные операторы фильтрации в нативные операторы запросов MongoDB.
| оператор | MongoDB |
|----------|--------------------------------|
| and | $and |
| or | $or |
| nor | $nor |
| eq | $eq |
| neq | $ne |
| gt | $gt |
| lt | $lt |
| gte | $gte |
| lte | $lte |
| inq | $in |
| nin | $nin |
| between| {$gte: ..., $lte: ...} |
| exists | $exists |
| like | $regex |
| nlike | $not с $regex |
| ilike | $regex с флагом i |
| nilike | $not с $regex и флагом i |
| regexp | $regex |
Тесты
Запуск контейнера mongo:latest скриптом setup.sh
./setup.shВыполнение тестов
npm run testЛицензия
MIT
