Sequelize 的“嵌套模型查询”最终会生成SQL“连接查询”语句,即生成'inner join'、'left join'等。在连接查询时,我们在可以连接阶段通过'on ... and'(如:ON A.id = B.user_id AND B.name = 'niefengjun.cn')来对连接表进行筛选,可以在where条件中(如:WHERE B....
阅读全文 →
Sequelize 可以实现针对单个实例的一或多个字段的自增、自减操作,也可以对符合条件的数据进行批量的自增、自减操作。单个实例字段的自增、自减可以利用Instance的相应方法实现,而批量自增、自减则需要借助sequelize提供的字面量方法实现。
单实例自增、自减
批量自增、自减
1. 单实例自增、自减
在Sequelize中,一个实例(Ins...
阅读全文 →
Sequelize 基于数据库实例定义模型,可以方便的进行数据的增、删、改、查操作,并可以基于模型关系实现连接查询、事务等操作。但这些操作都是基于一个数据库实例,即:一个sequelize实例,除读写分离外,Sequelize也并不支持多数据库操作。如果你的项目中需要对多个数据库进行操作,就不那么方便。本文将针对Sequelize操作多数据库的情况做一些整...
阅读全文 →
belongsToMany用于表示模型间N:M(多对多)的关系,N:M关系通过一个“关系表”建立两个模型间的关联关系。用于建立关联关系的“关系表”可以手工创建,也可以由Sequelize自动创建。
模型的定义
模型间的关联关系
N:M关联模型的查询
在个项目中,有用户、角色、用户角色关系三张表,三张表对应的模型及模型间的关系如下:
Users...
阅读全文 →
数据库中的事务是指单个逻辑所包含的一系列数据操作,要么全部执行,要么全部不执行。在一个事务中,可能会包含开始(START)、提交(COMMIT)、回滚(ROLLBACK)等操作,Sequelize 通过Transaction类来实现事务相关功能。Sequelize 中的事务有两种使用:可以基于Promise结果链进行自动提交或回滚,也可以由用户控制提交或回...
阅读全文 →
本文是对Sequelize 中文API文档系列文章的综合索引,及对sequelize模块和其内置对象的一些介绍,旨在帮助人们更好了解和使用Sequelize。
文档索引
官方文档对照
sequelize模块介绍
3.1 顶级对象Sequelize
3.2 Model对象的实例化
3.3 Instance实例的创建
在操作关...
阅读全文 →
前些年,本站整理过Sequelize相关中文文档,其时,Sequelize的版本为v3.*。现在Sequelize版本已更新到v5.19.6(本文发布之日),Sequelize的功能和API已有较大规模的更新,所以基于v5.*再进行一次梳理,以了解新功能及方便日后使用。
概述
快速入门(Getting started)
方言(Dialects)
...
阅读全文 →
在使用sequelize.define方法定义模型时,我们一般会为模型属性(列)指定类型type,它表示数据类型,Sequelize会按指定的类型在数据库中创建字段。这些类型被定义到了sequelize模块的DataTypes类中,它是一个静态类可以直接引用其属性或方法。
DataTypes类
DataTypes类中的API
2.1 STRI...
阅读全文 →
Hooks(钩子)是指会在模型生命周期的特殊时刻被调用的函数,如:模型实例被创建前会调用beforeCreate函数,而在模型实例创建后又会调用afterCreate函数。通过这些钩子函数,使用我们具有在生命周期的特殊时刻访问或操作模型数据的能力。
钩子函数的使用
1.1 钩子函数的调用顺序
1.2 定义钩子
1.3 移除钩子
1...
阅读全文 →
Scopes - 作用域,表示一个限制范围,它最终会生成SQL查询中的where子句。它在模型定义方法sequelize.define的option参数,或通过Model.scope()方法指定。
定义
使用
合并
关联
1. 定义
作用域允许你定义常用的查询,这样就可以很容易地在之后使用。Scopes包括所有相同属性规律的筛选器,where、...
阅读全文 →