Реализация репозитория для работы с базами данных

e22m4u dadc737bb5 chore: updates README.md 2 лет назад
.husky d2c55fccc0 chore: revert "builds as cjs" 2 лет назад
src e90312d348 fix: tests of hasMany relation, relation typings and README.md 2 лет назад
.c8rc dbff18d833 chore: initial commit 2 лет назад
.commitlintrc dbff18d833 chore: initial commit 2 лет назад
.editorconfig dbff18d833 chore: initial commit 2 лет назад
.eslintignore 730af0ba6c chore: adds *.d.ts 2 лет назад
.eslintrc.cjs 85139bcc41 chore: adds *.d.ts 2 лет назад
.gitignore dbff18d833 chore: initial commit 2 лет назад
.mocharc.cjs dbff18d833 chore: initial commit 2 лет назад
.prettierrc dbff18d833 chore: initial commit 2 лет назад
LICENSE dbff18d833 chore: initial commit 2 лет назад
README.md dadc737bb5 chore: updates README.md 2 лет назад
mocha.setup.js dbff18d833 chore: initial commit 2 лет назад
package.json 01012e39c2 chore: updates README.md 2 лет назад
tsconfig.json 771d9e379e chore: renames to @e22m4u/js-repository and fixes d.ts files 2 лет назад

README.md

@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