sequelize

sequelize不是DB連線的工具,但它可以幫助你跟所有資料庫做好orm的溝通,可以說是屬於node.js的hibernate套件,透過很完整的物件規範,讓每次的資料輸入可以直接與資料庫對應。

Github repository

https://github.com/sequelize/sequelize.git

官方文件

http://docs.sequelizejs.com/en/latest/docs/getting-started/

Installation

npm install sequlize --save

在與資料庫連線使用時,需要搭配各個資料庫的模組,官方建議有下面幾種資料庫的搭配套件:

postgresql的套件:

$ npm install --save pg pg-hstore

mysql的套件:

$ npm install --save mysql // For both mysql and mariadb dialects

sqlite3的套件:

$ npm install --save sqlite3

mssql的套件:

$ npm install --save tedious // MSSQL

Sample

在測試前,我們需要準備一個資料庫,下面以mysql資料庫維利,我們透過docker來啟動mysql

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql

接下來建立所有連線的資料庫,我們這邊建立一個test資料庫

create database test;

建立DB之後,下面的程式可以用來連線,並且建立:

var Sequelize = require('sequelize')
//初始化sequelize,這邊指定docker mysql的位置
//(我是用boot2docker,所以在本地需要指定給boot2docker的位置)
var sequelize = new Sequelize('test', 'root', 'password', {
  host: '192.168.59.103',
  dialect: 'mysql',
  pool: {
    max: 5,
    min: 0,
    idle: 10000
  }});

//建立物件模型
var User = sequelize.define('user', {
  firstName: {
    type: Sequelize.STRING,
    field: 'first_name' 
  },
  lastName: {
    type: Sequelize.STRING
  }
}, {
  freezeTableName: true 
});

//實作資料新增
User.sync({force: true}).then(function () {
  return User.create({
    firstName: 'John',
    lastName: 'Hancock'
  });
});

其中,User.sync()中使用{force: true}會讓城市每次執行的時候強制刪除資料庫,並且重新建立資料庫。這比較適合在測試環境中執行,而正式環境,則需要把force拿掉...

User.sync().then(function () {
  return User.create({
    firstName: 'John',
    lastName: 'Hancock'
  });
});

這部分可以參考:http://docs.sequelizejs.com/en/latest/docs/models-definition/#database-synchronization

results matching ""

    No results matching ""