Войти Зарегистрироваться
Войти Зарегистрироваться
20.07.2017 в 15:56 Блог

5 NodeJS SQL ORMs

ORM облегачают работу с данными представляя их в виде объектов. Ниже приведены несколько ORM, которые вы можите использовать в nodejs.

Sequelize

Sequelize - это ORM на основе Promise для Node.js и IO.js. Он поддерживает PostgreSQL, MySQL, MariaDB, SQLite и MSSQL, а также транзакции, связи и многое другое. Начиная с версии 4.0.0 Sequelize будет поддерживать только Node v4 и выше, чтобы использовать ES6.

Пример:

var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');
 
var User = sequelize.define('user', {
  username: Sequelize.STRING,
  birthday: Sequelize.DATE
});
 
sequelize.sync().then(function() {
  return User.create({
    username: 'janedoe',
    birthday: new Date(1980, 6, 20)
  });
}).then(function(jane) {
  console.log(jane.get({
    plain: true
  }));
});

node-orm2

node-orm2 - еще один инструмент ORM, который поддерживает MySQL, PostgreSQL, Amazon Redshift и SQLite.

Из особенностей:

  • Создание моделей, а также: sync, drop, bulk create, get, find, remove, count, aggregated functions
  • Создание моделей ассоциаций, поддерживающих: find, check, create and remove
  • Создание пользовательских валидаций
  • Кэширование экземпляров модели и целостность

Пример:

var orm = require("orm");
 
orm.connect("mysql://username:password@host/database", function (err, db) {
  if (err) throw err;
 
    var Person = db.define("person", {
        name      : String,
        surname   : String,
        age       : Number,
        male      : Boolean,
        continent : [ "Europe", "America", "Asia", "Africa", "Australia", "Antartica" ], // ENUM type
        photo     : Buffer, // BLOB/BINARY
        data      : Object // JSON encoded
    }, {
        methods: {
            fullName: function () {
                return this.name + ' ' + this.surname;
            }
        },
        validations: {
            age: orm.validators.rangeNumber(18, undefined, "under-age")
        }
    });
 
    Person.find({ surname: "Doe" }, function (err, people) {
        // SQL: "SELECT * FROM person WHERE surname = 'Doe'"
 
        console.log("People found: %d", people.length);
        console.log("First person: %s, age %d", people[0].fullName(), people[0].age);
 
        people[0].age = 16;
        people[0].save(function (err) {
            // err.msg = "under-age";
        });
    });
});

Вам будет легче, если вы используете Express, вы можете использовать простое промежуточное программное обеспечение для более легкой интеграции.

Пример:

var express = require('express');
var orm = require('orm');
var app = express();
 
app.use(orm.express("mysql://username:password@host/database", {
    define: function (db, models) {
        models.person = db.define("person", { ... });
    }
}));
app.listen(80);
 
app.get("/", function (req, res) {
    // req.models is a reference to models used above in define()
    req.models.person.find(...);
});

Bookshelf

Bookshelf это ORM JavaScript для Node.js, построенная на построителе запросов Knex SQL. Благодаря интерфейсам, основанным на обещаниях, и традиционным обратным вызовам, обеспечивая поддержку транзакций, загрузку загружаемых / вложенных запросов, полиморфные ассоциации и поддержку отношений «один к одному», «один ко многим» и «многие ко многим». Он разработан, чтобы хорошо работать с PostgreSQL, MySQL и SQLite3.

В то время как Bookshelf в первую очередь нацелена на Node.js, все зависимости совместимы с браузерами и могут быть адаптированы для работы с другими средами javascript, поддерживающими базу данных sqlite3, путем предоставления пользовательского адаптера Knex.

Пример: 

var knex = require('knex')({
  client: 'mysql',
  connection: {
    host     : '127.0.0.1',
    user     : 'your_database_user',
    password : 'your_database_password',
    database : 'myapp_test',
    charset  : 'utf8'
  }
});
 
var bookshelf = require('bookshelf')(knex);
 
var User = bookshelf.Model.extend({
  tableName: 'users'
});

Objection.js

Objection.js является ORM для Node.js, целью которого является оставаться на вашем пути и максимально упростить использование всей СУБД и базового механизма базы данных.

Objection.js, например Bookshelf, построен на замечательном построителе запросов SQL. Все базы данных, поддерживаемые knex, поддерживаются objection.js. SQLite3, Postgres и MySQL тщательно протестированы.

CaminteJS

CaminteJS - это ORM ORB для nodejs, предоставляющий общий интерфейс для доступа к большинству популярных форматов баз данных. Caminte поддерживает самые разнообразные базы данных и поставляется со следующими адаптерами: mysql, sqlite3, riak, postgres, couchdb, mongodb, redis, neo4j, firebird, rethinkdb, tingodb.

 

Автор Дмитрий Цирульников
Коментарии (0)
Для того что-бы оставить комментарий, авторизуйтесь