Web BizarroWeb Bizarro

Suscríbete a nuestro Newsletter

X

Únete a nuestra lista de correos para recibir semanalmente actualizaciones de nuestro contenido.

Un ORM para NodeJS

Un ORM para NodeJS 06.OCT.15

Alvaro José Rios Ch
Fundador WebBizarro

Los ORM son una parte muy importante del desarrollo de aplicaciones ya que nos permiten crear una astrabción de la base de datos en nuestra aplicación y evitan el uso de sentencias SQL que si bien pueden funcionar en un momento si despues deseamos cambiar el motor de base de datos por uno más potente entonces nos puede causar problemas.

Cuando estamos desarrollando aplicaciones con NodeJS o IO – me voy a referir a ambas como NodeJS para hacer más simple la explicación – tenemos que considerar las mismas cosas que si usamos otro lenguaje y el ORM es una parte importante, de momento podemos estar desarrollando nuestra app con MySql pero despues tal vez necesitemos migrar a otra plataforma con MSSql o Postgre por eso debemos estar preparados desde el principio.

Usar Sequelize es bastante fácil, primero instalarla mediante npm y de igual forma instalar la extensión adecuada para la base de datos que vamos a usar, de la siguiente forma.

$ npm install --save sequelize
# And one of the following:
$ npm install --save pg pg-hstore
$ npm install --save mysql // For both mysql and mariadb dialects
$ npm install --save sqlite3
$ npm install --save tedious // MSSQL

Como pueden ver estos son los motores soportados Postgre, Mysql o Mariadb, SqlLite3 y MsSql, salvo por oracle creo que estos son los más usados, luego de instalar la aplicación lo siguiente que deben hacer es configurar la conexión y la verdad es bastante simple.

var sequelize = new Sequelize('database', 'username', 'password', {
    host: 'localhost',
    dialect: 'mysql'|'mariadb'|'sqlite'|'postgres'|'mssql',
    pool: { max: 5, min: 0, idle: 10000 },
    // SQLite only
    storage: 'path/to/database.sqlite'
});

// Or you can simply use a connection uri
var sequelize = new Sequelize('postgres://user:pass@example.com:5432/dbname');

Hay algunas otras opciones que puedes consultar en la documentación esto es solo un ejemplo. Finalmente solo queda crear los modelos para tu base datos.

var User = sequelize.define('user', {
    firstName: {
        type: Sequelize.STRING,
        field: 'first_name' // Will result in an attribute that is firstName when user facing but first_name in the database
    },
    lastName: {
        type: Sequelize.STRING
    }
}, {
    freezeTableName: true // Model tableName will be the same as the model name
});

User.sync({force: true}).then(function () {
    // Table created
    return User.create({ firstName: 'John', lastName: 'Hancock' });
});

Bueno como pueden ver se crea un modelo usuario con el nombre y apellido, luego se crea la table y al crear la tabla se inserta un usuario, claro esto es algo muy básico pero pueden ver que es bastante sencillo, por lo que es una buena opción para el proximo proyecto en NodeJS.