README.md 3.5 KB

@e22m4u/js-repository

Модуль для работы с базами данных для 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" в результат
});

// [
//   {
//     "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