sequelize常用功能文档

导语

Sequelize是用于Postgres,MySQL,MariaDB,SQLite和Microsoft SQL Server的基于Promise的Node.js ORM。它具有可靠的事务支持,关系,急切和延迟加载,读取复制等功能。由于官方文档没有中文版,而且内容比较多,本文章将大部分常用的功能及配置项收集整合出来。

一、模型创建(Model.init)

//创建模型展示
class Project extends Model {}
Project.init({
  title: Sequelize.STRING,
  description: Sequelize.TEXT
}, { sequelize, modelName: 'project' });

class Task extends Model {}
Task.init({
  title: Sequelize.STRING,
  description: Sequelize.TEXT,
  deadline: Sequelize.DATE
}, { sequelize, modelName: 'task' })

Model相当于数据库中表,有时它也会被称为“模型”或“工厂”。Model不能通过构造函数创建,而只能通过sequlize.define方法来定义或通过sequlize.import导入。通过define定义一个Model,就相当于定义了一种模型与数据表之间的映射关系,通过模型可以实现对表记录的增、删、改、查等操作。Model.init方法可以传入2个参数来配置数据表,参数如下

定义字段(参数一)


  • allowNull:Boolean (将allowNull设置为false将向列中添加NOT NULL,这意味着错误将为,如果该列为空,则在执行查询时从数据库中抛出)
  • type:Sequelize.xxx(定义数据类型)
  • defaultValue:all (设置默认值)
  • primarykey:Boolean(定义主键)
  • AutoIncrement:Boolean(创建一个自增的整型列)
  • comment:String(添加备注描述)
  • fieId:String(字段名)
  • unique:String/Boolean(创建唯一索引,约束后插入重复值会报错,属性可以是boolean 或 string类型,如果为多个字段添加了相同的字符串那么将会是一个符合唯一键)

定义处理列名的方式(参数二)


  • timestamps:Boolean(是否开启时间戳)
  • modelName:String(模型的名称,默认为类名,这将控制自动生成的外键和关联命名的名称,一般可以不用修改,使用默认的)
  • tableName:String(定义表名)
  • parnoaid:Boolean(是否开启假删除,不删除数据库条目,只将deletedAt设置为当前日期,只有启动了时间戳timestamps该字段才生效)
  • underscored:Boolean(是否开启下划线(_)分割,默认是驼峰命名)
  • version:Boolean/String(启用乐观锁定。启用后,sequelize将添加一个版本计数属性,在保存陈旧实例时抛出一个OptimisticLockingError错误。设置为true或具有要启用的属性名的字符串,默认为false)
  • freezeTableName:Boolean(默认表名会根据(defind的第一个参数)转化为复数形式来命名,设置为true时会禁用表名的修改)

二、模型使用(Model.usage)


belongsTo

你可能感兴趣的:(sequelize常用功能文档)