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,
    timezone: '+08:00' // 时区
  }

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"
  }
}

注意: 如果你的数据库还不存在,你可以调用 npx sequelize db:create (--env=development 可添加环境)命令。 通过正确的访问,它将为您创建该数据库。

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

你可能感兴趣的:(node,egg,javascript)