Sequelize基础入门学习[Sequelize类]

本文介绍了如何使用SequelizeORM进行数据库连接,包括配置连接池、定义模型结构以及利用Promise进行异步操作。还详细解释了如何通过URI实例化Sequelize,以及如何定义和使用模型(如User和表结构)。
摘要由CSDN通过智能技术生成

建立连接

sequelize会在初始化时设置一个连接池,为每个数据库创建实例。

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' //仅sqlite适用

});

//或者使用l一个连接uri

var sequelize = new Sequelize ('postgress://user:pass@example.com:5432/dbname');

model定义

model引用格式:sequelize.define('name',{attributes},{options}):

var User = sequelize.define('user', {
  firstName: {
    type: Sequelize.STRING,
    field: 'first_name' // Will result in an attribute that is firstName when user facing but first_name in the database
  },
  lastName: {
    type: Sequelize.STRING
  }
}, {
  freezeTableName: true // Model 对应的表名将与model名相同
});

User.sync({force: true}).then(function () {
  // 已创建数据表
  return User.create({
    firstName: 'John',
    lastName: 'Hancock'
  });
});

Promise

Sequelize 基于Promise实现异步流程控制,但其使用的并不是ECMAScript 6中规定的标准Promise对象,而是使用bluebird,这个模块是对原生Promise的一个扩展。               

Sequelize类

  • new  Sequelize实例   

new Sequelize (database,[username=null],[password=null],[option={}])   数据库名、用户名、密码、一个可选的options对象参数

var Sequelize = require('sequelize');     require被引用后,会指向Sequelize的主类和构造函数

var sequelize = new Sequelize(database,[username=null],[password=null],[option={}])  引用后就可以通过关键字new实例化,实例化后就会以连接池的形式连接到所使用的数据库

实例化参数

名称

类型说明
databaseString数据库名
[username=null]String数据库用户名
[password=null]String数据库密码
[options={}]Object参数对象
[options.dialect='mysql']String

要连接的数据库类型

可选值有:mysql、postgres、sqlite、mariadb、mssql

[options.dialectModulePath=null]String指定路径模块添加数据连接
[options.dialectOptions]Object路径模块所使用的扩展选项
[options.storage]String仅用于sqlite,默认为:‘memory:'
[option.host='localhost']String连接数据库的主机
[option.port=]String连接数据库的端口
[options.protocol='tcp']String连接数据库使用的协议
[options.define={}]Object定义模型的选项,默认为'sequelize.define'选项
[options.query={}]Object'sequelize.query'的默认选项
[options.set={}]Object 'sequelize.set'的默认选项
[options.sync]Object'squelize.sync'的默认选项
[options.timezone='+00:00']String时间转换时从数据库得到javascript的时间,这个时区将应用于服务器的NOW、CURRENT_TIMESTAMP或其他时间函数
[options.logging]=console.log]Function用于sequelize日志打印的函数
[options.omitNull=false]Booleannull值是否通过SQL查询
[options.native=false]Boolean是否使用本地库,仅用于postgres[
[options.replication=false]Boolean

是否使用读写分离

要启用读/写复制,需要传递一个对象,这个对象有read、write两个属性.write是一个单一的对象(由单台服务器处理写入),而read、write两个属性,write是一个包含对象的数组(由多台服务器处理读取)。每台read、write服务器都可以包含以下属性:hostportusernamepassworddatabase

[options.pool={}]Object使用连接池连接,默认为true
[options.pool.maxConnections]Integer
[options.pool.minConnections]Integer
[options.pool.maxIdleTime]Integer连接最大空闲置时间(毫秒),超时后将释放连接。
[options.pool.validateConnection]Function连接验证函数
[options.quoteIdentifiers=true.]Boolean设置为fasle时Postgres中会使表名和属性大小不敏感,并跳过双引号。
[options.transcationType='DEFERRED'']String设置事务类型,详见Sequelize.Transcation.TYPES,仅Sqlite适用
[options.isolationLevel='REPEATABLE_READ']String设置事件的隔离级别
[options.retry]Object设置自动查询时的重试标志
[options.retry.match]Array匹配到指定的错误字符串之一后重试查询
[options.retry.max]Integer设置重试次数
[options.typeValidation=false]Boolean在插入、更新等操作时执行类型验证
[options.benchmark=false]Boolean在打印执行sql日子时输出执行时间(毫秒)

S  

  • Sequelize实例化示例                    
  •   var sequelize = new Sequelize  ('database','username') 不使用密码和选项
  •   var sequelize = new Sequelize  ('database','username','password') 不使用选项
  •   var sequelize = new Sequelize  ('databse','username',null,{})不使用密码/空密码
  •   var sequelize = new Sequelize  ('my_database','john','doe',{})使用密码和选项 

  • 通过URI实例化:

  new Sequelize(uri,[options={}])

  var sequelize = new Sequelize('mysql://localhost:3306/database',{})

  • sequelize.models实例中已定义的模型     

  sequelize.models;

  {

  User : User ,

  UserRole :UserRole,

 ...

 }

  • sequelize.define()模型定义

sequelize.define(modelname,attributes,[options])-》Model

该实例方法用于定义一个新的Model(模型),Model相当于数据库中的表,该对象不能通过构造函数实例化,而只能通过sequelize.define()或sequelize.import()方法创建。

attributes相当于表的字段

sequelize.define('modelName',{

columnA:{

      type:Sequelize.800LEAN,

     validate:{

}

}

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值