1. 程式人生 > >node/egg - sequelize 構建ORM

node/egg - sequelize 構建ORM

1. npm i egg-sequelize mysql2 sequelize-cli

啟動專案 npm run dev

 2. 配置plugin.js啟動外掛

exports.sequelize = {
  enable: true,
  package: 'egg-sequelize',
};

配置config.default.js

 config.sequelize = {
    dialect: 'mysql',
    database: 'baseName',
    host: 'localhost',
    port: '3306',
    username: 'root',
    password: 'root,
  }

3.配置 .sequelize(因為egg-sequlize的sequelize-cli有版本問題,所以自定義sequelize-cli)

const path = require('path');

module.exports = {
  'config': path.resolve('config', 'config.json'),
  'models-path': path.resolve('app', 'model'),
  'seeders-path': path.resolve('app', 'seeder'),
  'migrations-path': path.resolve('app', 'migration')
}

  初始化 

$ node_modules/.bin/sequelize init

生成3個資料夾 1個json檔案

app/migration  # 用來存放資料庫遷移資料夾,當需要修改表結構的時候,可以控制這些程式碼來控制資料庫表結構的版本回退

app/model  # 用表中欄位如何對映到js物件上的邏輯

app/seeder  # 用來存放如何生成假資料的資料夾

config/config.json # 資料庫配置

{
  "development": {
    "username": "root",
    "password": "yourpass",
    "database": "database_development",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "test": {
    "username": "root",
    "password": "yourpass",
    "database": "database_test",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "production": {
    "username": "root",
    "password": "yourpass",
    "database": "database_production",
    "host": "127.0.0.1",
    "dialect": "mysql"
  }
}

注意: 如果你的資料庫還不存在,你可以呼叫 db:create 命令。 通過正確的訪問,它將為您建立該資料庫。

4 建立user 的 Migration

$ node_modules/.bin/sequelize model:generate --name User --attributes firstName:string,lastName:string,email:string

這將發生以下事情

  • 在 models 資料夾中建立了一個 user 模型檔案
  • 在 migrations 資料夾中建立了一個名字像 XXXXXXXXXXXXXX-create-user.js 的遷移檔案

注意: Sequelize 將只使用模型檔案,它是表描述。另一邊,遷移檔案是該模型的更改,或更具體的是說 CLI 所使用的表。 處理遷移,如提交或日誌,以進行資料庫的某些更改。

遷移到資料庫

$ node_modules/.bin/sequelize db:migrate

撤銷遷移

恢復最近的遷移

$ node_modules/.bin/sequelize db:migrate:undo

通過使用 db:migrate:undo:all 命令撤消所有遷移,可以恢復到初始狀態。 您還可以通過將其名稱傳遞到 --to 選項中來恢復到特定的遷移

$ node_modules/.bin/sequelize db:migrate:undo:all --to XXXXXXXXXXXXXX-create-posts.js

5. 建立假資料

這個命令將會在 seeders 資料夾中建立一個種子檔案。檔名看起來像是 XXXXXXXXXXXXXX-demo-user.js,它遵循相同的 up/down 語義,如遷移檔案。

node_modules/.bin/sequelize seed:generate --name demo-user

現在編輯這個檔案

'use strict';

module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.bulkInsert('Users', [{
        firstName: 'John',
        lastName: 'Doe',
        email: '[email protected]'
      }], {});
  },

  down: (queryInterface, Sequelize) => {
    return queryInterface.bulkDelete('Users', null, {});
  }
};

插入資料庫

$ node_modules/.bin/sequelize db:seed:all

這將執行該種子檔案,您將有一個演示使用者插入 User 表。

注意: seeders 執行不會儲存在任何使用 SequelizeMeta 表的遷移的地方。 如果你想覆蓋這個,請閱讀 儲存 部分

撤銷

node_modules/.bin/sequelize db:seed:undo

撤銷全部

node_modules/.bin/sequelize db:seed:undo:all