Hướng dẫn sequelize mysql node js - sắp xếp lại nút mysql js

Sequelize là một ORM dành cho Node.js và io.js. Nó hỗ trợ bạn truy cập một cách dễ dàng đến PostgreSQL, MySQL, MariaDB, SQLite và MSSQL cùng với các tính năng như là relations, transaction, replication ...

I. Cài đặt Sequelize.

  1. Cài đặt npm:
      sudo apt-get install npm
  1. Cài đặt Sequelize
      npm install --save sequelize
  Cài đặt hệ quản trị cơ sở dữ liệu mà bạn muốn tương tác, Sequelize hỗ trợ PostgreSQL, MySQL, SQLite và MSSQL:
      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
  1. Tạo connection pool

Sequelize sẽ tạo 1 connection pool khi được khởi tạo vì vậy bạn chỉ nên tạo duy nhất 1 instance trên 1 database:

    var sequelize = new Sequelize('database',         'username', 'password', {
        host: 'localhost',
        dialect: 'mysql'|'mariadb'|'sqlite'|'postgres'|'mssql',

        pool: {
            max: 5,
            min: 0,
            idle: 10000
        },

       storage: 'path/to/database.sqlite' // Chỉ dùng khi MS là SQLite
    });

Bạn có thể connect trực tiếp đến 1 database uri như sau:

    var sequelize = new Sequelize('postgres://user::5432/dbname');

II. Tính năng chính

  1. Model

Để tạo 1 ánh xạ giữa 1 model và 1 table ta sử dụng phương thức define. Sequelize sẽ tự động tạo các attributes là createdAt và updatedAt (nếu bạn không muốn sử dụng hoặc chỉ sử dụng 1 trong 2 attributes thì có thể tham khảo ở phần config sau đây).

    var Project = sequelize.define('Project', {
        title: Sequelize.STRING,
        description: Sequelize.TEXT
    })

Ngoài ra bạn có thể thêm các option cho các attributes:

    var Book = sequelize.define('Book', {
       title: { type: Sequelize.STRING, allowNull: false, defaultValue: true},
       author: { type: Sequelize.STRING, allowNull: false},
       ISBN: {type: Sequelize.STRING, unique: true},
  });

Một số kiểu dữ liệu phổ biến của Sequelize:

    Sequelize.STRING                      // VARCHAR(255)
    Sequelize.STRING(1234)                // VARCHAR(1234)
    Sequelize.STRING.BINARY               // VARCHAR BINARY
    Sequelize.TEXT                        // TEXT

    Sequelize.INTEGER                     // INTEGER
    Sequelize.BIGINT                      // BIGINT
    Sequelize.BIGINT(11)                  // BIGINT(11)

    Sequelize.FLOAT                       // FLOAT
    Sequelize.FLOAT(11)                   // FLOAT(11)
    Sequelize.FLOAT(11, 12)               // FLOAT(11,12)

    Sequelize.REAL                        // REAL        Chỉ hỗ trợ PostgreSQL.
    Sequelize.REAL(11)                    // REAL(11)    Chỉ hỗ trợ PostgreSQL.
    Sequelize.REAL(11, 12)                // REAL(11,12) Chỉ hỗ trợ PostgreSQL.

    Sequelize.DOUBLE                      // DOUBLE
    Sequelize.DOUBLE(11)                  // DOUBLE(11)
    Sequelize.DOUBLE(11, 12)              // DOUBLE(11,12)

    Sequelize.DECIMAL                     // DECIMAL
    Sequelize.DECIMAL(10, 2)              // DECIMAL(10,2)

    Sequelize.DATE                        // DATETIME for mysql / sqlite, TIMESTAMP WITH TIME ZONE for postgres
    Sequelize.BOOLEAN                     // TINYINT(1)

    Sequelize.ENUM('value 1', 'value 2')
    Sequelize.ARRAY(Sequelize.TEXT)       // Chỉ hỗ trợ PostgreSQL.

    Sequelize.JSON                        // JSON column. Chỉ hỗ trợ PostgreSQL.
    Sequelize.JSONB                       // JSONB column. Chỉ hỗ trợ PostgreSQL.

Bạn có thể xem tất cả các kiểu dữ liệu ở đường link sau http://docs.sequelizejs.com/en/latest/api/datatypes/

Config

    var Bar = sequelize.define('Bar', { /* bla */ }, {
        // Không tự động thêm timestamp attributes (updatedAt, createdAt)
        timestamps: false,

       // softDelete, Sequelize sẽ tự động thêm attribute deletedAt, chỉ hoạt động khi bạn enable timestamps
        paranoid: true,

       // Sử dụng underscore style thay cho camel style
       // updatedAt sẽ là updated_at...
        underscored: true,

      // chỉ định tên table
        tableName: 'my_very_custom_table_name'
    })

Sử dụng model:

      npm install --save sequelize
0
      npm install --save sequelize
1
      npm install --save sequelize
2
  1. Query

    • Để select một vài attribute, bạn có thể sử dụng attributes optin
      npm install --save sequelize
3
  • Mệnh đề where
      npm install --save sequelize
4
  • Các toán tử bạn có thể sử dụng cùng với where
      npm install --save sequelize
5
  • Raw Query: Đôi khi bạn muốn excute một raw query, khi đó bạn có thể sử dụng sequelize.query
      npm install --save sequelize
6
  1. Relations

    Các loại relation gồm: One-To-One associations, One-To-Many associations, Belongs-To-Many associations

    3.1 One-To-One associations

    • BelongsTo:
      npm install --save sequelize
7
      npm install --save sequelize
8
      npm install --save sequelize
9

3.2 One-To-Many associations

  Cài đặt hệ quản trị cơ sở dữ liệu mà bạn muốn tương tác, Sequelize hỗ trợ PostgreSQL, MySQL, SQLite và MSSQL:
0

3.3 Belongs-To-Many associations

  Cài đặt hệ quản trị cơ sở dữ liệu mà bạn muốn tương tác, Sequelize hỗ trợ PostgreSQL, MySQL, SQLite và MSSQL:
1
  1. Migration

    Để sử dụng tính năng migration bạn cần cài thêm package sequelize-cli

  Cài đặt hệ quản trị cơ sở dữ liệu mà bạn muốn tương tác, Sequelize hỗ trợ PostgreSQL, MySQL, SQLite và MSSQL:
2
  Cài đặt hệ quản trị cơ sở dữ liệu mà bạn muốn tương tác, Sequelize hỗ trợ PostgreSQL, MySQL, SQLite và MSSQL:
3
  Cài đặt hệ quản trị cơ sở dữ liệu mà bạn muốn tương tác, Sequelize hỗ trợ PostgreSQL, MySQL, SQLite và MSSQL:
4
  Cài đặt hệ quản trị cơ sở dữ liệu mà bạn muốn tương tác, Sequelize hỗ trợ PostgreSQL, MySQL, SQLite và MSSQL:
5
  Cài đặt hệ quản trị cơ sở dữ liệu mà bạn muốn tương tác, Sequelize hỗ trợ PostgreSQL, MySQL, SQLite và MSSQL:
6

Tổng kết: Qua bài viết này mình muốn giới thiệu những tính năng cơ bản của Sequelize, Ngoài ra những tính năng trên còn có rất nhiều tính năng khác như: Transaction, Scope, Hooks...

Tài liệu tham khảo: - Sequelize Doc : http://docs.sequelizejs.com/