Sequelize.js:一个基于 promise 的 Node.js ORM

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS Agent(兼容OpenClaw),2核4GB
简介: Sequelize.js:一个基于 promise 的 Node.js ORM

中文文档摘要:


Sequelize 是一个基于 promise 的 Node.js ORM, 目前支持 Postgres, MySQL, MariaDB, SQLite 以及 Microsoft SQL Server. 它具有强大的事务支持, 关联关系, 预读和延迟加载,读取复制等功能。


文档


中文:https://www.sequelize.com.cn/

英文:https://sequelize.org/

npm: https://www.npmjs.com/package/sequelize

github: https://github.com/sequelize/sequelize

安装


$ node -v
v16.14.0
pnpm i sequelize mysql2

依赖 package.json

{
  "type": "module",
  "dependencies": {
    "mysql2": "^2.3.3",
    "sequelize": "^6.21.3"
  }
}

定义模型


import { Sequelize, DataTypes } from "sequelize";
// 连接到数据库
const sequelize = new Sequelize("mysql://root:123456@127.0.0.1:3306/data");
// sequelize.define(modelName, attributes, options)
const User = sequelize.define(
  "User",
  {
    name: DataTypes.STRING,
    age: DataTypes.INTEGER,
  },
  {
    // 表名
    tableName: "table_user",
    // 时间戳,默认createdAt/updatedAt
    timestamps: false,
    createdAt: "create_time",
    updatedAt: "update_time",
  }
);

CURD示例


async function createRow() {
  const user = await User.create({ name: "Jane", age: 23 });
  // INSERT INTO `table_user` (`id`,`name`,`age`) VALUES (DEFAULT,?,?);
  console.log(user.toJSON());
  // { id: 8, name: 'Jane', age: 23 }
}
async function selectRow() {
  const user = await User.findByPk(3);
  // SELECT `id`, `name`, `age` FROM `table_user` AS `User` WHERE `User`.`id` = 3;
  console.log(user.toJSON());
  // { id: 3, name: 'Tom', age: 23 }
}
async function selectRows() {
  const users = await User.findAll();
  // SELECT `id`, `name`, `age` FROM `table_user` AS `User`;
  console.log(users.map((user) => user.toJSON()));
  // [
  //   { id: 2, name: 'Tom', age: 23 },
  // ]
}
async function updateRow() {
  const result = await User.update(
    { name: "Doe" },
    {
      where: {
        id: 1,
      },
    }
  );
  // UPDATE `table_user` SET `name`=? WHERE `id` = ?
  console.log(result);
  // [ 1 ]
}
async function deleteRow() {
  await User.destroy({
    where: {
      id: 1,
    },
  });
  // DELETE FROM `table_user` WHERE `id` = 1
}
(async () => {
  // await createRow()
  // await selectRow();
  // await selectRows();
  // await updateRow();
  // await deleteRow();
})();
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
7月前
|
Java 编译器 Go
【Golang】(1)Go的运行流程步骤与包的概念
初次上手Go语言!先来了解它的运行流程吧! 在Go中对包的概念又有怎样不同的见解呢?
378 4
|
8月前
|
缓存 前端开发 JavaScript
性能测试指标拟定参考
本文介绍性能测试关键指标与实施要点,涵盖用户数、业务量、核心场景及性能指标(如TPS、响应时间、波动率)的调查方法,指导如何科学评估系统处理能力与稳定性。
|
7月前
|
消息中间件 缓存 NoSQL
订单实时状态查询接口技术实现
本文介绍如何用Python和Flask构建高效订单实时查询接口,涵盖RESTful设计、Redis缓存、数据库优化与Kafka消息队列,实现毫秒级响应、高并发支持,提升电商系统用户体验。
442 0
|
7月前
|
存储 Linux iOS开发
Elasticsearch Enterprise 9.1.5 发布 - 分布式搜索和分析引擎
Elasticsearch Enterprise 9.1.5 (macOS, Linux, Windows) - 分布式搜索和分析引擎
534 0
|
9月前
|
机器学习/深度学习 人工智能 程序员
每个慢节奏创业者都需要知道的AI加速器
你还在为创业速度慢而焦虑吗?AI时代来了!本文将通过一个虚拟咖啡店老板的故事,教你如何用AI工具把创业速度提升10倍,从想法到产品上线只需要几天而不是几个月。
272 10
|
10月前
|
运维 监控 持续交付
还在为部署开源工具烦恼?自动化部署工具 Websoft9一键部署 300+ 开源应用
在数字化时代,开源工具因免费、灵活、可定制等特性广受欢迎,但其部署过程却常因环境配置复杂、依赖繁琐、耗时长等问题令人头疼。本文介绍了传统部署的三大难点,并提出两种解决方案:传统手动部署与集成化控制台部署。
还在为部署开源工具烦恼?自动化部署工具 Websoft9一键部署 300+ 开源应用
|
10月前
|
数据采集 存储 数据可视化
R语言爬虫实战:如何爬取分页链接并批量保存
R语言爬虫实战:如何爬取分页链接并批量保存
|
存储 数据采集 物联网
物联网技术在物流领域的应用会遇到哪些挑战?
物联网技术在物流领域的应用会遇到哪些挑战?
900 60
|
机器学习/深度学习 人工智能 运维
智能化运维在现代数据中心的应用与挑战####
本文深入探讨了智能化运维(AIOps)技术在现代数据中心管理中的实际应用,分析了其带来的效率提升、成本节约及潜在风险。通过具体案例,阐述了智能监控、自动化故障排查、容量规划等关键功能如何助力企业实现高效稳定的IT环境。同时,文章也指出了实施过程中面临的数据隐私、技术整合及人才短缺等挑战,并提出了相应的解决策略。 --- ####
420 22
|
XML 算法 数据可视化
我的Neo4j探索之旅 - 安装Apoc插件以及JAVA集成(二)
我的Neo4j探索之旅 - 安装Apoc插件以及JAVA集成(二)
1476 0

热门文章

最新文章