Об этом проекте
lowdb — это небольшая минималистичная локальная JSON-база данных для JavaScript и TypeScript. Её основная идея: если вы знаете JavaScript, вы уже умеете ею пользоваться — данные хранятся в обычном объекте в db.data, а запросы и изменения выполняются нативными операциями с массивами и объектами, а не с помощью специального языка запросов.
Типичное использование: чтение или создание JSON-файла, затем обновление либо в два шага (изменить db.data, затем await db.write()), либо одним вызовом через db.update(fn). Результирующий db.json — обычный JSON. Пользователи TypeScript могут объявить тип Data, чтобы db.data проверялся на уровне типов, что позволяет выявлять ошибки, например, добавление числа в массив строк.
Пакет — чистый ESM, устанавливается командой npm install lowdb. Предоставляются четыре пресета для распространённых случаев: JSONFilePreset, JSONFileSyncPreset, LocalStoragePreset и SessionStoragePreset. Для большего контроля доступны классы Low и LowSync, а также адаптеры. Встроенные адаптеры включают JSONFile и JSONFileSync для JSON-файлов, Memory и MemorySync для быстрой работы в памяти во время тестов, а также LocalStorage и SessionStorage для браузеров. Утилитарные адаптеры TextFile, TextFileSync, DataFile и DataFileSync помогают создавать собственные адаптеры, например, для поддержки YAML или добавления шифрования и сжатия с помощью функций parse и stringify.
Адаптеры — это простые классы с методами read и write, поэтому пользователи могут подключать удалённое хранилище или другие форматы. В README также показано расширение Low с помощью Lodash для цепочечных запросов. Документированные ограничения: lowdb не поддерживает кластерный модуль Node, а запись больших объектов (примерно 10–100 МБ) может быть медленной, поскольку каждый вызов db.write сериализует весь db.data через JSON.stringify. Пакетные операции и запись только при необходимости могут смягчить это; для более крупных масштабов README рекомендует PostgreSQL или MongoDB.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.