Модуль для работы с базами данных для Node.js
npm install @e22m4u/js-repository
Опционально устанавливаем адаптер для базы данных.
| описание | |
|---|---|
memory |
виртуальная база в памяти процесса (не требует установки) |
mongodb |
MongoDB - система управления NoSQL базами (установка) |
Модуль позволяет объединить несколько баз данных в единую абстракцию
«Схема». Являясь экземпляром класса Schema, абстракция
предоставляет методы для определения «Источника данных» и «Модели».
Источник заботится о подключении к базе, а модель описывает структуру
документа коллекции и связи к другим моделям.
Непосредственно чтение и запись производится с помощью «Репозитория», который можно получить для каждой модели, если она имеет источник данных.
flowchart TD
A[Схема]
subgraph Базы данных
B[Источник 1]
C[Источник 2]
end
A-->B
A-->C
subgraph Коллекции
D[Модель A]
E[Модель Б]
F[Модель В]
G[Модель Г]
end
B-->D
B-->E
C-->F
C-->G
H[Репозиторий A]
I[Репозиторий Б]
J[Репозиторий В]
K[Репозиторий Г]
D-->H
E-->I
F-->J
G-->K
Репозиторий имеет набор методов для различных операций с документами модели. Некоторые из методов позволяют разрешать связи в момент обращения к данным, встраивая документы других моделей в результат выборки.
Если модель city в своем определении имеет связь
country, то пример запроса с включением связанных
документов методом find может выглядеть так:
const cities = await cityRep.find({
include: 'country', // включить "country" в результат
});
console.log(cities);
// [
// {
// "id": 24,
// "name": "Moscow",
// "countryId": 12, <= ключ целевой модели
// "country": { <= связанный документ
// "id": 12,
// "name": "Russia",
// }
// },
// {
// "id": 25,
// "name": "Bangkok",
// "countryId": 13, <= ключ целевой модели
// "country": { <= связанный документ
// "id": 13,
// "name": "Thailand",
// }
// },
// ...
// ]
npm run test
MIT