DevGang
Авторизоваться

Ларавел-подобная библиотека управления базами данных для NodeJS

Слышали ли вы об ORM в истории NodeJS?

NodeORM - это легкая и гибкая библиотека объектно-реляционного отображения (ORM) для приложений Node.js, вдохновленная библиотекой Laravel. Она обеспечивает бесшовный интерфейс между объектами JavaScript и реляционными базами данных, облегчая разработчикам взаимодействие с базами данных с помощью привычного синтаксиса JavaScript.

Он упрощает и оптимизирует процесс работы с реляционными базами данных, делая взаимодействие с базами данных более интуитивным и удобным для разработчиков. Это позволяет разработчикам сосредоточиться на создании надежных приложений, не заботясь о сложностях управления базами данных. Независимо от того, работаете ли вы с MySQL, SQLite или пользовательскими решениями для баз данных, NodeORM предлагает бесшовный и последовательный интерфейс для ваших потребностей в базах данных.

Установка

Настоятельно рекомендуется устанавливать с github, чтобы получить последние обновления.

npm install obaydmerz/nodeorm

Однако для большинства стабильных сборок вы можете использовать npm.

npm install @obayd/nodeorm

Ключевые особенности

  • Независимость от баз данных: NodeORM поддерживает множество драйверов баз данных, включая MySQL, SQLite и пользовательские драйверы сырых функций, что позволяет пользователям работать с предпочитаемыми базами данных.
  • Определение модели: Пользователи могут определять свои модели баз данных с помощью таких свойств, как имя таблицы, столбцы и первичные ключи. Это позволяет легко сопоставлять таблицы базы данных с классами JavaScript.
  • Удобное построение запросов: Благодаря свободному синтаксису цепочки методов, NodeORM позволяет пользователям строить сложные SQL-запросы естественным и интуитивно понятным способом, упрощая создание динамических запросов для операций с базой данных.
  • Класс ModelItem: Класс ModelItem представляет отдельные элементы (строки) в таблице базы данных с методами CRUD. Пользователи могут взаимодействовать с конкретными записями базы данных с помощью этого класса.
  • Класс Collection: Класс Collection представляет группу ModelItems с возможностями группировки и фильтрации. Он позволяет пользователям работать с несколькими записями как с единым целым.
  • Обработка ошибок: NodeORM определяет пользовательские классы ошибок для конкретных сценариев ошибок, таких как EmptyDataError и UnmatchingStateError. Это помогает пользователям справляться с ошибками более эффективно и изящно.
  • Динамическое создание моделей: Пользователи могут динамично создавать модели во время работы, избавляясь от необходимости их предварительного определения. Такая гибкость позволяет более эффективно адаптировать взаимодействие с базой данных.
  • Ленивая загрузка: NodeORM использует оптимизацию ленивой загрузки во время итераций, что повышает производительность при работе с большими наборами данных.
  • Отсутствие зависимостей: Библиотека типа "подключи и работай".
  • Полная совместимость: Библиотека автоматически подключается к mysql, mysql2 и sqlite3.
  • Множественные соединения: Вы можете беспрепятственно подключаться к нескольким базам данных одновременно.
  • Неблокируемая структура: Эта библиотека основана на синтаксисе async-await.
  • И многое другое...
// MySQL example
// Inserting a new row/item into a table named `test`.

import { Model, initialize } from "@obayd/nodeorm";

class Test extends Model {}

(async () => {
  await initialize("mysql://root@localhost:3306/mydb", Test);

  const myNewItem = Test.create();

  myNewItem.string_value = "We have a better tomorrow!";
  myNewItem.integer_value = 2024;

  await myNewItem.save();

  console.log(myNewItem.id); // Output: 1
})();

Изменения в базе данных:

// Reading the row that we just inserted.
// We used here an attribute *getter*

import { Model, initialize } from "../index.js";

class Test extends Model {
  static _ourPhrase() {
    // We used here an attribute *getter*
    // Note we used the following syntax _attributeName
    return this.string_value + " in the year of " + this.integer_value;
  }
}

(async () => {
  await initialize("mysql://root@localhost:3306/mydb", Test);

  const myLastItem = await Test.last();

  // We accessed an additional attribute.
  console.log(myLastItem.ourPhrase); // Output: We have a better tomorrow! in the year of 2024
})();
// Editing the row that we just inserted.

import { Model, initialize } from "@obayd/nodeorm";

class Test extends Model {}

(async () => {
  await initialize("mysql://root@localhost:3306/mydb", Test);

  const myLastItem = await Test.last();

  myLastItem.integer_value = 2025;

  await myLastItem.save();
})();

Изменения в базе данных:

// Deleting the row that we just inserted.
// Demonstrates how to use find() to *find* items

import { Model, initialize } from "@obayd/nodeorm";

class Test extends Model {}

(async () => {
  await initialize("mysql://root@localhost:3306/mydb", Test);

  //const myLastItem = await Test.last();

  // We used find() syntax instead of last() just to demonstrate how it works.
  //const myLastItem = await Test.where("id", 1);
  //const myLastItem = await Test.where("id", "=", 1);
  const myLastItem = await Test.find(1);

  await myLastItem.delete();
})();

Изменения в базе данных:

HeidiSQL используется для отображения изменений в базе данных, подумайте о его поддержке!

Мультиподдержка

NodeORM позволяет получать доступ и управлять другими типами баз данных, например SQLite.

// SQLite example
import { Model, initialize } from "@obayd/nodeorm";

class Test extends Model {}

(async () => {
  await initialize("C:/Users/Hello/Documents/mysqlite.db", Test);

  const my = await Test.last();
  console.log(my.string_value);
})();

Легко, не правда ли?

Для получения дополнительной информации и расширенных возможностей использования обратитесь к NodeORM Wiki.

Надеюсь, вы узнали что-то новое и... пока!

Источник:

#JavaScript #NodeJS #SQL #MySQL
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу