ORM框架Sequelize简介

安装

// Using NPM
$ npm install --save sequelize

# And one of the following:
$ npm install --save pg pg-hstore
$ npm install --save mysql2
$ npm install --save sqlite3
$ npm install --save tedious // MSSQL

// Using Yarn
$ yarn add sequelize

# And one of the following:
$ yarn add pg pg-hstore
$ yarn add mysql2
$ yarn add sqlite3
$ yarn add tedious // MSSQL

我在使用时安装了sequelize和mysql,现个版本分别为:"mysql": "^2.13.0", "sequelize": "^3.30.4"

使用

1. 连接数据库,生成Sequelize实例

sequelize提供了两种方式来实现数据库的链接

方法一:

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

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

  // SQLite only
  storage: 'path/to/database.sqlite'
});

方法二:

const sequelize = new Sequelize('postgres://user:[email protected]:5432/dbname')

2. 定义模型,告诉Sequelize如何映射数据库

const User = sequelize.define('user', {
  firstName: {
    type: Sequelize.STRING
  },
  lastName: {
    type: Sequelize.STRING
  }
},{
    timestamps: false,
    tableName:'mohe_user'
});

用sequelize.define()定义Model时,传入名称user,默认的表名就是users。第二个参数指定列名和数据类型,如果是主键,需要更详细地指定。第三个参数是额外的配置,我们传入{ timestamps: false }是为了关闭Sequelize的自动添加timestamp的功能。所有的ORM框架都有一种很不好的风气,总是自作聪明地加上所谓“自动化”的功能,但是会让人感到完全摸不着头脑。tableName用来指定数据库表的名称,覆盖默认表名。

3. 调用模型方法,操作数据库

第一步:访问MySQL,创建数据库表

执行mysql -u root -p 输入口令后连接MySQL服务器

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

查看数据库

use test;
create table mohe_user (
    id varchar(50) not null,
    name varchar(100) not null,
    gender bool not null,
    birth varchar(10) not null,
    createdAt bigint not null,
    updatedAt bigint not null,
    version bigint not null,
    primary key (id)
) engine=innodb;

在数据库test中,创建mohe_user表

第二步,调用创建的user模型往mohe_user表中添加数据

var now = Date.now();

user.create({
    id: 'g-' + now,
    name: 'Gaffey',
    gender: false,
    birth: '2007-07-07',
    createdAt: now,
    updatedAt: now,
    version: 0
}).then(function (p) {
    console.log('created.' + JSON.stringify(p));
}).catch(function (err) {
    console.log('failed: ' + err);
});

调用成功后效果如图:

ORM框架Sequelize简介_第1张图片
image.png

参考资源:

  • 实例
  • sequelizejs官网
  • javascript全栈教程

你可能感兴趣的:(ORM框架Sequelize简介)