【node】Sequelize常用操作、基本增删改查

本文涉及的产品
PolarDB Agent Flow,2核4GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS AI 助手,专业版
简介: 【node】Sequelize常用操作、基本增删改查

sequelize初始化


先初始化一个数据库实例


// 实例化数据库对象-数据库连接池
var sequelize = new Sequelize(
CONFIG.MYSQL.database, //数据库名
CONFIG.MYSQL.username, //账号
CONFIG.MYSQL.password, //密码
{
  host: CONFIG.MYSQL.host,//端口,一般为localhost
  // 数据库类型
  dialect: 'mysql',
  // 是否打印日志
  logging: CONFIG.DEBUG ? console.log : false,
  // 配置数据库连接池
  pool: {
    max: 5,
    min: 0,
    idle: 10000
  },
  // 时区设置
  timezone: '+08:00'
});

再初始化一个model实例


// 定义model
const Wish = db.define('Wish', {
  // 定义主键,autoIncrement 选项用于创建一个自增的整型列
  id: {type: Sequelize.INTEGER, primaryKey: true, allowNull: false, autoIncrement: true},
  // 日期默认值 => 当前时间
  myDate: { type: Sequelize.DATE, defaultValue: Sequelize.NOW },
  // 添加唯一(unique)约束后插入重复值会报错
  someUnique: {type: Sequelize.STRING, unique: true},
  // 可以通过 "field" 属性来指定数据库中的字段名
  fieldWithUnderscores: { type: Sequelize.STRING, field: "field_with_underscores" },
}, {
  // 是否支持驼峰
  underscored: true,
  // MySQL数据库表名
  tableName: 'wish',
});

sequelize的数据类型


Sequelize.STRING                      // VARCHAR(255)
Sequelize.STRING(1234)                // VARCHAR(1234)
Sequelize.STRING.BINARY               // VARCHAR BINARY
Sequelize.TEXT                        // TEXT
Sequelize.TEXT('tiny')                // TINYTEXT
Sequelize.INTEGER                     // INTEGER
Sequelize.BIGINT                      // BIGINT
Sequelize.BIGINT(11)                  // BIGINT(11)
Sequelize.FLOAT                       // FLOAT
Sequelize.FLOAT(11)                   // FLOAT(11)
Sequelize.FLOAT(11, 12)               // FLOAT(11,12)
Sequelize.REAL                        // REAL        PostgreSQL only.
Sequelize.REAL(11)                    // REAL(11)    PostgreSQL only.
Sequelize.REAL(11, 12)                // REAL(11,12) PostgreSQL only.
Sequelize.DOUBLE                      // DOUBLE
Sequelize.DOUBLE(11)                  // DOUBLE(11)
Sequelize.DOUBLE(11, 12)              // DOUBLE(11,12)
Sequelize.DECIMAL                     // DECIMAL
Sequelize.DECIMAL(10, 2)              // DECIMAL(10,2)
Sequelize.DATE                        // DATETIME for mysql / sqlite, TIMESTAMP WITH TIME ZONE for postgres
Sequelize.DATE(6)                     // DATETIME(6) for mysql 5.6.4+. Fractional seconds support with up to 6 digits of precision 
Sequelize.DATEONLY                    // DATE without time.
Sequelize.BOOLEAN                     // TINYINT(1)
Sequelize.ENUM('value 1', 'value 2')  // An ENUM with allowed values 'value 1' and 'value 2'
Sequelize.ARRAY(Sequelize.TEXT)       // Defines an array. PostgreSQL only.
Sequelize.JSON                        // JSON column. PostgreSQL only.
Sequelize.JSONB                       // JSONB column. PostgreSQL only.
Sequelize.BLOB                        // BLOB (bytea for PostgreSQL)
Sequelize.BLOB('tiny')                // TINYBLOB (bytea for PostgreSQL. Other options are medium and long)
Sequelize.UUID                        //   PostgreSQL 和 SQLite 中为 UUID, MySQL 中为CHAR(36) BINARY (使用 defaultValue: Sequelize.UUIDV1 或 Sequelize.UUIDV4 生成默认值)
Sequelize.RANGE(Sequelize.INTEGER)    // Defines int4range range. PostgreSQL only.
Sequelize.RANGE(Sequelize.BIGINT)     // Defined int8range range. PostgreSQL only.
Sequelize.RANGE(Sequelize.DATE)       // Defines tstzrange range. PostgreSQL only.
Sequelize.RANGE(Sequelize.DATEONLY)   // Defines daterange range. PostgreSQL only.
Sequelize.RANGE(Sequelize.DECIMAL)    // Defines numrange range. PostgreSQL only.
Sequelize.ARRAY(Sequelize.RANGE(Sequelize.DATE)) // Defines array of tstzrange ranges. PostgreSQL only.
Sequelize.GEOMETRY                    // Spatial column.  PostgreSQL (with PostGIS) or MySQL only.
Sequelize.GEOMETRY('POINT')           // Spatial column with geomerty type.  PostgreSQL (with PostGIS) or MySQL only.
Sequelize.GEOMETRY('POINT', 4326)     // Spatial column with geomerty type and SRID.  PostgreSQL (with PostGIS) or MySQL only.

基本增删改查的写法


SELECT * FROM 表名 WHERE 属性名 = 值


写法:

model对象名
.findOne({ where: {属性名: 值}}).then(function(result) {
  console.log(result.dataValues)
})

SELECT * FROM 表名


写法:

model对象名
.findAll({
  raw: true
  }).then(function(result) {
  console.log(result)
})

SELECT * FROM 表名 OREDER BY 属性名 DESC LIMIT 3


写法:

model对象名
.findAll({
  limit: 3,
  order: [['属性名', 'DESC']]
  }).then(function(result) {
      result.forEach((v) => {
        console.log(v.dataValues);
  });
})

SELECT count(*) AS count FROM 表名


写法:

model对象名
.count().then(function(c) {
  console.log("表中有" + c + " 个元素")
})

SELECT max(属性名) AS max FROM 表名


写法:

model对象名
.max('属性名').then(function(c) {
  console.log("表中最大值为" + c)
})

SELECT min(属性名) AS min FROM 表名


写法:

model对象名
.min('属性名').then(function(c) {
  console.log("表中最小值为" + c)
})

SELECT sum(属性名) AS sum FROM 表名


写法:

model对象名
.sum('属性名').then(function(c) {
  console.log("表中求和为" + c)
})

INSERT INTO 表名 VALUES(‘value1’, …)


model对象名
.create({  
  属性名1 : 值,
  属性名2 : 值,
  属性名3 : 值,
  ...
});

UPDATE 表名 SET 属性名1=新值 WHERE 属性名2=值


model对象名
.update({   
  属性名1: 新值,  
},
{
  where:{属性名2:值}
});

DELETE FROM 表名 WHERE 属性名=值


model对象名
.destroy({   
  where: {属性名:值}  
});
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 JavaScript 数据库
nodejs中express框架实现增删改查接口
nodejs中express框架实现增删改查接口
|
开发框架 JavaScript 测试技术
nodejs使用eggjs创建项目,接入influxdb完成单表增删改查
nodejs使用eggjs创建项目,接入influxdb完成单表增删改查
297 0
|
JavaScript 关系型数据库 MySQL
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
412 0
|
JavaScript 关系型数据库 MySQL
node连接mysql,并实现增删改查功能
【8月更文挑战第26天】node连接mysql,并实现增删改查功能
720 3
|
SQL JavaScript 前端开发
node.js使用Sequelize操作数据库
node.js使用Sequelize操作数据库
497 4
|
JavaScript 前端开发 API
node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查
node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查
757 1
|
关系型数据库 MySQL 数据库
Node连接MySQL数据库进行基本的增删改查操作(一看就会)(二)
Node连接MySQL数据库进行基本的增删改查操作(一看就会)
|
关系型数据库 MySQL 数据库
Node连接MySQL数据库进行基本的增删改查操作(一看就会)(一)
Node连接MySQL数据库进行基本的增删改查操作(一看就会)
node+express实现简单的增删改查
node+express实现简单的增删改查
194 0