Sequelize 中文API文档
来源:互联网 发布:淘宝卖家7天不发货 编辑:程序博客网 时间:2024/06/07 23:59
Sequelize 中文API文档-1. 快速入门、Sequelize类
2016年05月20日 35766 声明
Sequelize
类是引用sequlize
模块后获取一个顶级对象,我们通过它来创建sequlize
实例,也可以通过该对象来获取模内其它对象的引用,如:Utils
工具类、Transaction
事务类等。创建实例后,可以通过实例来创建或定义Model
(模型)、执行查询、同步数据库结构等操作。
- 快速入门
- 1.1 安装
- 1.2 建立连接
- 1.3
model
定义 - 1.4
Promise
Sequelize
类- 2.1
new Sequelize()
- 实例化 - 2.2
new Sequelize()
- 通过URI实例化 - 2.3
sequelize.models
- 实例中已定义的模型 - 2.4
sequelize.define()
- 模型定义 - 2.5
Sequelize
- 顶级对象 - 2.6
Utils
- 工具类 - 2.7
Promise
- Promise对象 - 2.8
QueryTypes
- 查询类型枚举 - 2.9
Validator
-validator.js
对象 - 2.10
Transaction
- 事务对象 - 2.11
Deferrable
- 延时对象 - 2.12
Instance
- 实例对象 - 2.13
Association
- 联合关系对象 - 2.14
Error
- 错误对象 - 2.15
ValidationError
- 验证失败错误对象 - 2.16
DatabaseError
- 数据库错误对象 - 2.17
TimeoutError
- 查询超时错误对象 - 2.18
UniqueConstraintError
- 唯一性错误对象 - 2.19
ExclusionConstraintError
- 排出约束错误对象 - 2.20
ForeignKeyConstraintError
- 外键约束错误对象 - 2.21
ConnectionError
- 连接错误对象 - 2.22
ConnectionRefusedError
- 连接拒绝错误对象 - 2.23
AccessDeniedError
- 无访问权限错误对象 - 2.24
HostNotFoundError
- 主机未找到错误对象 - 2.25
InvalidConnectionError
- 无效链接错误对象 - 2.26
ConnectionTimedOutError
- 链接超时错误对象 - 2.27
InstanceError
- 实例错误对象 - 2.28
sequelize.getDialect()
- 返回数据库类型 - 2.29
sequelize.getQueryInterface()
- 返回QueryInterface
实例 - 2.30
sequelize.define()
- 模型定义 - 2.31
sequelize.model()
- 获取模型 - 2.32
sequelize.isDefined()
- 检查模型是否定义 - 2.33
sequelize.import()
- 模型导入 - 2.34
sequelize.query()
- 执行查询 - 2.35
sequelize.set()
- 设置变量 - 2.36
sequelize.escape()
- 编码 - 2.37
sequelize.createSchema()
- 创建数据库 schema - 2.38
sequelize.showAllSchemas()
- 查询已定义的schema - 2.39
sequelize.dropSchema()
- 删除定义的schema - 2.40
sequelize.dropAllSchemas()
- 删除所有schema - 2.41
sequelize.sync()
- 同步模型到数据库 - 2.42
sequelize.truncate()
- 截断已定义的表 - 2.43
sequelize.drop()
- 删除表 - 2.44
sequelize.authenticate()
- 验证连接 - 2.45
sequelize.fn()
- 函数调用 - 2.46
sequelize.col()
- 列对象 - 2.47
sequelize.cast()
- cast函数 - 2.48
sequelize.literal()
- 字面量对象 - 2.49
sequelize.and()
- AND查询 - 2.50
sequelize.or()
- OR查询 - 2.51
sequelize.json()
- json嵌套对象 - 2.52
sequelize.where()
- 指定WHERE条件 - 2.53
sequelize.transaction()
- 启动事务
- 2.1
1. 快速入门
1.1 安装
Sequelize
可以通过npm
命令获取,除安装sequelize
模块外还要安装所使用数据的驱动模块:
$ npm install --save sequelize# 还需要安装以下之一:$ npm install --save pg pg-hstore // postgreSql$ npm install --save mysql // mysql 或 mariadb$ npm install --save sqlite3 $ npm install --save tedious // MSSQL
1.2 建立连接
Sequelize
会在初始化时设置一个连接池,这样你应该为每个数据库创建一个实例:
var sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql'|'mariadb'|'sqlite'|'postgres'|'mssql', pool: { max: 5, min: 0, idle: 10000 }, // 仅 SQLite 适用 storage: 'path/to/database.sqlite'});// 或者可以简单的使用一个连接 urivar sequelize = new Sequelize('postgres://user:pass@example.com:5432/dbname');
1.3 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' });});
1.4 Promise
Sequelize
基于Promise
实现异步流程控制,但其使用的并不是ECMAScript 6
中规定的标准Promise
对象,而是使用bluebird,这个模块是对原生Promise
的一个扩展。
由于是基于Promise
实现的流程控制,所以不能像下面这样获取查询值:
user = User.findOne()console.log(user.get('firstName'));
user
是一个promise
对象而不是
2. Sequelize
类
2.1 new Sequelize()
- 实例化
new Sequelize(database, [username=null], [password=null], [options={}])
require
引用后,会指向Sequelize
的主类的构造函数,引用后就可以通过new
关键字进行实例化,实例化后就会以连接池的形式连接到所使用的数据库。语法结构如下:
var Sequelize = require('sequelize');var sequelize = new Sequelize(database, [username=null], [password=null], [options={}])
实例化Sequelize
时,需要传入数据库名、用户名和密码,还可以传入一个可选的options
参数对象。
实例化参数
要启用读/写复制,需要传递一个对象,这个对象有read
、write
两个属性。write
是一个单一的对象(由单台服务器处理写入),而read
是一个包含对象的数组(由多台服务器处理读取)。每台read
、write
服务器都可以包含以下属性:host
、port
、username
、password
、database
。
读写分离的使用请参考:Sequelize 实现数据库读写分离
true
[options.pool.maxConnections]Integer [options.pool.minConnections]Integer [options.pool.maxIdleTime]Integer连接最大空置时间(毫秒),超时后将释放连接[options.pool.validateConnection]Function连接验证函数[options.quoteIdentifiers=true]Boolean设置为false
时Postgres中会使表名和属性大小写不敏感,并跳过双引号[options.transactionType='DEFERRED']String设置事务类型,详见Sequelize.Transaction.TYPES
。仅Sqlite适用[options.isolationLevel='REPEATABLE_READ']String设置事件的隔离级别,详见Sequelize.Transaction.ISOLATION_LEVELS
[options.retry]Object设置自动查询时的重试标志[options.retry.match]Array匹配到指定的错误字符串之一后重试查询[options.retry.max]Integer设置重试次数[options.typeValidation=false]Boolean在插入、更新等操作时执行类型验证[options.benchmark=false]Boolean在打印执行的SQL日志时输出执行时间(毫秒)Sequelize
实例化示例
// 不使用密码和选项var sequelize = new Sequelize('database', 'username')// 不使用选项var sequelize = new Sequelize('database', 'username', 'password')// 不使用密码/空密码var sequelize = new Sequelize('database', 'username', null, {})// 使用密码和选项var sequelize = new Sequelize('my_database', 'john', 'doe', {})
Sequelize
实例化(初始化)有以上几种形式,通过构造函数实例化后,就可以通过其返回的sequelize
实例定义Model
、执行query
查询、执行transaction
等。
2.2 new Sequelize()
- 通过URI实例化
new Sequelize(uri, [options={}])
Sequelize
可以通过一个URI进行实例化:
// 使用Uri连接var sequelize = new Sequelize('mysql://localhost:3306/database', {})
2.3 sequelize.models
- 实例中已定义的模型
sequelize.models
该实例属性用于返回通过sequelize.define
定义的所有模型对象
sequelize.models;// 返回值如下{ User: User, UserRole: UserRole, …… }
2.4 sequelize.define()
- 模型定义
sequelize.define(modelName, attributes, [options]) -> Modal
这个实例方法用于定义一个新Model
(模型)。Model
相当于数据库中的表,该对象不能通过构造函数实例化,而只能通过sequelize.define()
或sequelize.import()
方法创建。
表中的字段通过第二个参数对象attributes
来定义,对象中的一个属性相当于表中的一个字段。
如,可以像下面这样定义一个表:
sequelize.define('modelName', { columnA: { type: Sequelize.BOOLEAN, validate: { is: ["[a-z]",'i'], // will only allow letters max: 23, // only allow values <= 23 isIn: { args: [['en', 'zh']], msg: "Must be English or Chinese" } }, field: 'column_a' // Other attributes here }, columnB: Sequelize.STRING, columnC: 'MY VERY OWN COLUMN TYPE'})sequelize.models.modelName // The model will now be available in models under the name given to define
2.5 Sequelize
- 顶级对象
var Sequelize = require('sequelize');
Sequelize
是一个指向sequelize模块顶级对象引用,同时也是一个构造函数。可以通过该构造函数进行Sequelize
类的实例化;也可以通过该对象来访问模块中子对象,如:DataTypes
、Errors
、Transactions
等。
2.6 Utils
- 工具类
Sequelize.Utils
一个指定sequelize中工具类的引用,大多数情况下需要直接引用该对象,如:可以使用Sequelize.Utils._
属性,该属性是一个指向lodash
库的引用,如果你项目中没有另外引用该库就可以通过该属性来调用。
2.7 Promise
- Promise对象
Sequelize.Promise
该属性是一个指向bluebird
Promise类型的引用。
2.8 QueryTypes
- 查询类型枚举
Sequelize.QueryTypes
用于sequelize.query
的表示查询类型的枚举对象。可用类型如下:
module.exports = { SELECT: 'SELECT', INSERT: 'INSERT', UPDATE: 'UPDATE', BULKUPDATE: 'BULKUPDATE', BULKDELETE: 'BULKDELETE', DELETE: 'DELETE', UPSERT: 'UPSERT', VERSION: 'VERSION', SHOWTABLES: 'SHOWTABLES', SHOWINDEXES: 'SHOWINDEXES', DESCRIBE: 'DESCRIBE', RAW: 'RAW', FOREIGNKEYS: 'FOREIGNKEYS',};
2.9 Validator
- validator.js
对象
Sequelize.Validator
一个指定validator.js
对象的引用,该对象用于Sequelize内部的验证,如:非常、URL、IP等,也可以通过该属性进行一些自定义验证。
2.10 Transaction
- 事务对象
Sequelize.Transaction
该属性是一个指向SequelizeTransaction
类的引用,要以使用这个属性来访问创建事务的隔离级别和事务类型等。
2.11 Deferrable
- 延时对象
Sequelize.Deferrable
指向一个延时集合的引用,通过个属必可以访问不通的延时选项。
2.12 Instance
- 实例对象
Sequelize.Instance
一个指定Sequelize实例类的引用。
2.13 Association
- 联合关系对象
Sequelize.Association
一个指定Association
类的引用。
2.14 Error
- 错误对象
Sequelize.Error
Sequelize中生成错误的类
2.15 ValidationError
- 验证失败错误对象
Sequelize.ValidationError
验证失败时会生成此对象
2.16 DatabaseError
- 数据库错误对象
Sequelize.DatabaseError
验证失败时会生成此对象
指向一个所有数据库相关错误的类
2.17 TimeoutError
- 查询超时错误对象
Sequelize.TimeoutError
当数据库查询超时时会生成TimeoutError
对象。
2.18 UniqueConstraintError
- 唯一性错误对象
Sequelize.UniqueConstraintError
当数违反唯一约束时会生成UniqueConstraintError
对象。
2.19 ExclusionConstraintError
- 排出约束错误对象
Sequelize.ExclusionConstraintError
在数据库中违反排除约束时触发此错误。
2.20 ForeignKeyConstraintError
- 外键约束错误对象
Sequelize.ForeignKeyConstraintError
在数据库中违反外键约束时触发此错误。
2.21 ConnectionError
- 连接错误对象
Sequelize.ConnectionError
一个指向数据库连接错误时触发的错误对象。
2.22 ConnectionRefusedError
- 连接拒绝错误对象
Sequelize.ConnectionRefusedError
一个指向数据库连接被拒绝时触发的错误对象。
2.23 AccessDeniedError
- 无访问权限错误对象
Sequelize.AccessDeniedError
连接到数据库但没有访问权限时会触发此错误。
2.24 HostNotFoundError
- 主机未找到错误对象
Sequelize.HostNotFoundError
连接数据但主机名(IP或URI)未找到时会触发这个错误对象。
2.25 InvalidConnectionError
- 无效链接错误对象
Sequelize.InvalidConnectionError
连接到数据库但其中的任意参数出现错误时会触发这个错误对象。
2.26 ConnectionTimedOutError
- 链接超时错误对象
Sequelize.ConnectionTimedOutError
连接数据库超时时会触发这个错误对象。
2.27 InstanceError
- 实例错误对象
Sequelize.InstanceError
当任何实例方法出现问题时会触发这个错误对象。
2.28 sequelize.getDialect()
- 返回数据库类型
sequelize.getDialect()
该实例方法用于返回实例类型(数据库类型)
2.29 sequelize.getQueryInterface()
- 返回QueryInterface
实例
sequelize.getQueryInterface()
返回QueryInterface
的实例
详见:queryInterface
对象及功能
2.30 sequelize.define()
- 模型定义
define(modelName, attributes, [options]) -> Model
定义一个模型,该模型是一个建立了与数据表关系的对象
被定义的表中的列在该方法的第二个参数中定义,可以理解为每个属性对应一个表的字段:
sequelize.define('modelName', { columnA: { type: Sequelize.BOOLEAN, validate: { is: ["[a-z]",'i'], // will only allow letters max: 23, // only allow values <= 23 isIn: { args: [['en', 'zh']], msg: "Must be English or Chinese" } }, field: 'column_a' // Other attributes here }, columnB: Sequelize.STRING, columnC: 'MY VERY OWN COLUMN TYPE'})sequelize.models.modelName // The model will now be available in models under the name given to define
如上所示,列的定义可以是字符串、一个预定义的Sequelize构造函数、或是一个对象。在定义列时,我们可以指定数据类型,也可以指定默认值、主键/外键等约束,还可以自定义访问器(getter)和设置器(setter)。
参数
sequelize.models
属性中会使用这个名称;如果没有在options
中指定表名,数据库中也会使用此属性做为表名。attributesObject一个对象,其每个属性对应表中的一个列,每个列可以使用一个预定义的DataType
、字符串或类型描述对象定义:attributes.columnString | DataType | Object数据库中的列描述attributes.column.typeString | DataTypeDataType
或字符串,表示列的数据类型[attributes.column.allowNull=true]Boolean设置为
false
时,会给添加NOT NULL
(非空)约束,数据保存时会进行非空验证[attributes.column.defaultValue=null]Any字面默认值, JavaScript函数, 或一个 SQL 函数 (查看
sequelize.fn
)[attributes.column.unique=false]String | Boolean设置为
true
时,会为列添加唯一约束[attributes.column.primaryKey=false]Boolean指定是否是主键[attributes.column
.field=null]String设置在数据库中的字段名。设置后会,Sequelize会将属性名映射到数据库中的不同名称[attributes.column
.autoIncrement=false]Boolean是否自增[attributes.column
.comment=null]String字段描述(自
1.7+
后,此描述不再添加到数据库中)[attributes.column.references=null]String | Model引用对象[attributes.column
.references.model]String | Model如果列引用到另一个表,可以通过这个属性设置模型或字符串。[attributes.column
.references.key='id']String该列表示到表外键列的引用[attributes.column.onUpdate]String当被引用的键更新时的操作,可选值是:CASCADE, RESTRICT, SET DEFAULT, SET NULL 或 NO ACTION 之一[attributes.column.onDelete]String当被引用的键删除时的操作,可选值是:CASCADE, RESTRICT, SET DEFAULT, SET NULL 或 NO ACTION 之一[attributes.column.get]Function为列自定义一个访问器。使用
this.getDataValue(String)
时调用的值[attributes.column.set]Function为列自定义一个设置器。使用this.setDataValue(String, Value)
时调用的值[attributes.validate]Object模型每次保存时调用的验证对象。可是validator.js
中的验证函数(参见 DAOValidator
)、或自定义的验证函数。[options]Object提供给Sequelize 构造函数的一些默认值[options.defaultScope={}]Object定义使用此模型的默认搜索范围。作用范围与提供给 find / findAll 的选项形式相同[options.scopes]Object更多范围,定义 defaultScope 的定义形式相同。关于限制范围的定义请参考Model.scope
[options.omitNull]Boolean是否忽略空值,这意味着,所有列的空值将不会被保存[options.timestamps=true]Boolean为模型添加 createdAt 和 updatedAt 两个时间戳字段[options.paranoid=false]Boolean使用逻辑删除。设置为true
后,调用 destroy
方法时将不会删队模型,而是设置一个 deletedAt
列。此设置需要 timestamps=true
[options.underscored=false]Boolean转换列名的驼峰命名规则为下划线命令规则[options.underscoredAll=false]Boolean转换模型名的驼峰命名规则为表名的下划线命令规则[options.freezeTableName=false]Boolean设置为true
时,sequelize不会改变表名,否则可能会按其规则有所调整[options.name]Object允有singular
和 plural
两个属性的对象,在模型与其它模型关联时使用[options.name.singular=inflection.singularize(modelName)]String [options.name.plural=
inflection.pluralize(modelName)]String [options.indexes]Array.<Object>要建立的索引[options.indexes[].name]String索引名,默认为模型名 + '_' + 字段名[options.indexes[].type]String索引类型,仅用于 mysql,其值为:
UNIQUE
、 FULLTEXT
或SPATIAL
之一[options.indexes[].method]String创建索引的方法(SQL中的USING
声明)。BTREE 或 HASH 可以在 mysql 和 postgres中支持,postgres中支持,还支持 GIST 和 GIN[options.indexes[].unique=false]Boolean设置索引是否唯一,设置后会自动触发UNIQUE
设置[options.indexes[].concurrently=false]BooleanPostgreSQL 中在创建索引时不使用任务写锁定。仅 Postgres 适用[options.indexes[].fields]Array.<String | Object>建立索引的字段数组。每个字段可以是一个字段名,sequelize 对象 (如
sequelize.fn
),或一个包含:
attribute
(字段名)、length
(创建前缀字符数)、order
(列排序方向)、collate
(较验的字段集合 (排序))[options.createdAt]String | Boolean如果为字符串,则使用提供的值代替 createdAt 列的默认名,设置为flase
则不添加这个字段。[options.updatedAt]String | Boolean如果为字符串,则使用提供的值代替 updatedAt 列的默认名,设置为flase
则不添加这个字段[options.deletedAt]String | Boolean如果为字符串,则使用提供的值代替 deletedAt 列的默认名,设置为flase
则不添加这个字段[options.tableName]String模型所对应表的表名,设置freezeTableName 为 true时,才会严格使用模型名[options.getterMethods]Object提供给 getter 调用的方法,与每列定义的访问器一样。如果为列定义了一个相同名称的 getter 方法,那么会通过这个方法获取值;如果未定义的名称与列不匹配,这将做为一个虚拟访问器;也用于设置多个值,但不能用在。[options.setterMethods]Object提供给 setter 调用的方法,与每列定义的设置器一样。如果为列定义了一个相同名称的 setter 方法,那么会通过这个方法设置值;如果未定义的名称与列不匹配,这将做为一个虚拟访设置;也用于匹配多个值,但不用于逻辑删除。[options.instanceMethods]Object提供给每个实例(DAO)的方法。如果通过sequelize对方法进行了重写,可以通过"this.constructor.super_.prototype"来调用原方法,如:this.constructor.super_.prototype.toJSON.apply(this, arguments)[options.classMethods]Object添加到Model
的类方法,如果通过sequelize对方法进行了重写,可以通过 this.constructor.prototype
来调用原方法,如:this.constructor.prototype.find.apply(this, arguments)[options.schema='public']String [options.engine]String [options.charset]String [options.comment]String [options.collate]String [options.initialAutoIncrement]StringMySQL中设置 AUTO_INCREMENT (自增)的初始值[options.hooks]Object一个包含钩子函数的对象,这些函数会在生生命周期内某些事件发生之前或之后被调用。可添加的钩子函数有:beforeValidate, afterValidate, beforeBulkCreate, beforeBulkDestroy, beforeBulkUpdate, beforeCreate, beforeDestroy, beforeUpdate, afterCreate, afterDestroy, afterUpdate, afterBulkCreate, afterBulkDestory 和 afterBulkUpdate。每个属性可以是一个函数,或是一个包含一组函数的数组。[options.validate]Object模型广泛验证对象。该验证会通过this
。如果验证函数中有参数,则会被认为是异步的,并通过一个包含可选错误的回调函数形式的的调。2.31 sequelize.model()
- 获取模型
sequelize.model(modelName]) -> Model
获取一个已经定义的模型。modelName
表示通过sequelize.define
定义的模型名。
2.32 sequelize.isDefined()
- 检查模型是否定义
sequelize.isDefined(modelName) -> Boolean
检查模型是否已经定义。modelName
表示通过sequelize.define
定义的模型名。
2.33 sequelize.import()
- 模型导入
sequelize.import(path) -> Model
通过文件导入模型定义。检查模型是否已经定义。
被导入的模型会被缓存,所以多次导入并不会重复加载
path
表示要导入文件的路径,如果使用相对路径会自动转换为绝对路径。
2.34 sequelize.query()
- 执行查询
sequelize.query(sql, [options={}]) -> Promise
执行原始SQL 语句进行查询
默认情况下,返回值中有两个参数:一个包含结果的数组,一个元数据对象。可以通过.spread
方法来查看结果。
如果不想使用原始查询结果,可以第二个可选参数中传一个type
参数,并指定查询的类型。设置后,sequelize会对结果进行格式化:
sequelize.query('SELECT...').spread(function (results, metadata) { // Raw query - use spread});sequelize.query('SELECT...', { type: sequelize.QueryTypes.SELECT }).then(function (results) { // SELECT query - use then})
参数
true
时,sequelize 不会查询结果进行格式化,或不会根据结果构建实例[options.transaction=null]Transaction为查询指定事务[options.type='RAW']String执行的查询类型,sequelize会根据这个类型对返回结果格式化。可以设置为一个字符串,或是通过Sequelize.QueryTypes
来设置[options.nest=false]Boolean设置为true
,会使用dottie.js库,转换通过.
设置的对象层级关系。如:{ 'user.username': 'john' }
会被转换为{ user: { username: 'john' }}
。设置true
后,查询类型如未明确指定,则使用'SELECT'
[options.plain=false]Boolean设置查询类型为 SELECT
并返回单行结果[options.replacements]Object | Array替换:param
格式的查询参数对象,或用于替换SQL中?
符号的参数数组[options.bind]Object | Array$param
格式绑定参数的对象,或未命令绑定参数数组,会替换SQL中的$1, $2, ...
[options.useMaster=false]Boolean强制查询使用写池,而不管查询类型[options.logging=false]Function一个用打印执行的SQL语句的函数[options.instance]Instance用于sequelize 实例,用于从查询结果中构建实例[options.model]Model用于sequelize 模型,用于从查询结果中构建实例[options.retry]Object设置自动重试的控制标识对象[options.retry.match]Array发生错误时,匹配到数组中的标识后自动重试[options.retry.max]Integer设置最大重试次数[options.searchPath=DEFAULT]String一个用于指定 schema 的 search_path 的可选项(仅 Postgres 适用)[options.supportsSearchPath]Boolean是否使用 searchPath (仅 Postgres 适用)[options.mapToModel=false]Object字段到模型的映射关系,当提供options.model
或 options.instance
时。映射会在建立模型实例之前进行[options.fieldMap]Object当为 SELECT
查询时,映射字段与属性名2.35 sequelize.set()
- 设置变量
sequelize.set(variables, options) -> Promise
设置一个变量,设置后将会执行基于环境变量或用户变量的查询。此变量会在每次建立连接时设置,仅MySQL 适用。
2.36 sequelize.escape()
- 编码
sequelize.escape(value) -> String
对值value
进行编码并返回编码结果。
2.37 sequelize.createSchema()
- 创建数据库 schema
sequelize.createSchema(schema, options={}) -> Promise
创建一个新的数据库 schema
参数
2.38 sequelize.showAllSchemas()
- 查询已定义的schema
sequelize.showAllSchemas(options={}) -> Promise
查询数据库中已定义的schema
参数
2.39 sequelize.dropSchema()
- 删除定义的schema
sequelize.dropSchema(schema, options={}) -> Promise
删除数据库中已定义指定名称的schema
参数
2.40 sequelize.dropAllSchemas()
- 删除所有schema
sequelize.dropAllSchemas(options={}) -> Promise
删除数据库中所有已定义的schema
参数
2.41 sequelize.sync()
- 同步模型到数据库
sequelize.sync([options={}]) -> Promise
同步所有已定义的模型到数据库中
参数
force: true
时非常有用[options.logging=console.log]Boolean | function执行SQL的日志打印函数[options.schema='public']String创建表的 schema 。这一选项可以每个表的 sequelize.define
中重写[options.searchPath=DEFAULT]String一个用于指定 schema 的 search_path 的可选项(仅 Postgres 适用)[options.hooks=true]Boolean设置为true
时,会调用同步相关的钩子函数:beforeSync、afterSync、beforBulkSync、afterBulkSync2.42 sequelize.truncate()
- 截断已定义的表
sequelize.truncate([options]) -> Promise
截断所有已定义的模型所对应的表,这个操作实际上是调用每个模型的Model.truncate()
方法
参数
2.43 sequelize.drop()
- 删除表
sequelize.drop(options) -> Promise
删除所有已定义的模型所对应的表,这个操作实际上是调用每个模型的Model.drop()
方法
参数
2.44 sequelize.authenticate()
- 验证连接
sequelize.authenticate() -> Promise
验证已建立的连接
别名:validate
2.45 sequelize.fn()
- 函数调用
sequelize.fn(fn, args) -> Sequelize.fn
创建于一个相当于数据库函数的对象。该函数可用于搜索查询的where
和order
部分,以及做为列定义的默认值。如果想在列中引用你定义的函数,就要使用sequelize.col
,这样列就能正确的解析,而不是解析为字符串。
如,将username
字段值解析为大写形式:
instance.updateAttributes({ username: self.sequelize.fn('upper', self.sequelize.col('username'))})
2.46 sequelize.col()
- 列对象
col(col) -> Sequelize.col
创建一个相当于数据库列的对象。这个方法经常结合sequelize.fn
使用,它可以保证将列名正确的传递给该方法,而不是经过转义。
col
-表示列名
2.47 sequelize.cast()
- cast函数
cast(val, type) -> Sequelize.cast
创建一个表示cast函数调用的对象
val
-{any},cast的值type
-{String},cast类型
2.48 sequelize.literal()
- 字面量对象
literal(val) -> Sequelize.literal
创建一个字面量对象,该值不会转义
别名:asIs
更多关于sequelize.literal()
的使用请参考:
字段值批量自增、自减
2.49 sequelize.and()
- AND查询
and(args) -> Sequelize.and
AND查询
val
-{String | Object},会被AND连接的参数
2.50 sequelize.or()
- OR查询
or(args) -> Sequelize.or
OR查询
val
-{String | Object},会被OR连接的参数
2.51 sequelize.json()
- json嵌套对象
json(conditions, [value]) -> Sequelize.json
生成一个Postgre中json类型的嵌套对象
conditions
-{String | Object},一个能够被postgres json 语法解析以的嵌套对象[value]
-{String | Object},可选的比较值,会生成 "<json path> = '<value>'"
2.52 sequelize.where()
- 指定WHERE条件
json(conditions, [value]) -> Sequelize.json
指定属性=条件。
属性也可以从Model.rawAttributes
对象获取(如:Model.rawAttributes.id
、Model.rawAttributes.name
)。属性应该已在模型中定义。也可以从sequelize工具函数中获取(如:sequelize.fn,
、sequelize.col
当使用字符串属性是,用于{ where: { attr: something }}
语法。如果不希望属性被转义,请使用sequelize.literal
。
attr
-{Object},属性[comparator='=']
-{String}logic
-{String | Object},限制条件可以是简单字符串或进一步的条件对象(如:$or
、$and
、.litera
)
别名:condition
2.53 sequelize.transaction()
- 启动事务
sequlize.transaction([options={}]) -> Promise
启动一个事务。当使用事务时,需要将事务做为一个可选参数transaction
传入,然后查询就会在传入的事务下执行:
sequelize.transaction().then(function (t) { return User.find(..., { transaction: t}).then(function (user) { return user.updateAttributes(..., { transaction: t}); }) .then(t.commit.bind(t)) .catch(t.rollback.bind(t));})
事务支持自动提交或回滚,当使用promise链接调用时会自动完成:
sequelize.transaction(function (t) { // 注意,这时使用的是callback而不是promise.then() return User.find(..., { transaction: t}).then(function (user) { return user.updateAttributes(..., { transaction: t}); });}).then(function () { // Committed}).catch(function (err) { // Rolled back console.error(err);});
启用CLS
命名空间时,事务分被自动挂载。
var cls = require('continuation-local-storage'), ns = cls.createNamespace('....');var Sequelize = require('sequelize');Sequelize.cls = ns;
相关
- Transaction
参数
Sequelize.Transaction.TYPES
,仅 Sqlite 适用[options.isolationLevel='REPEATABLE_READ']String事务的隔离级别,参见
Sequelize.Transaction.ISOLATION_LEVELS
[options.logging=false]Function用于打印执行SQL的函数- Sequelize 中文API文档
- Sequelize API简记
- Twitter API中文文档
- Twitter API中文文档
- JFreeChart API中文文档
- JFreeChart API中文文档
- Twitter API中文文档
- android中文API文档
- Twitter API中文文档
- Twitter API中文文档
- RequireJS API 中文文档
- jQuery API 中文文档
- Android 中文API文档
- Android中文API文档
- 中文 Appium API 文档
- poi中文api文档
- JFreeChart API中文文档
- POI中文API文档
- adreno-profiler 3-7
- Android查看activity所在任务栈
- JDK官网下载教程
- 创业项目——脸趴APP
- ROS的launch文件
- Sequelize 中文API文档
- 重写方法声明Override
- Bootstrap相关特性
- HttpClient学习笔记
- 堆区 栈区 常量区 I/O操作耗时测试
- 小火车(链表)
- 系统调用和库函数的区别
- 高德地图定位及导航开发流程
- HDU-1217-Arbitrage