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

简介: 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月前
|
JSON 监控 API
掘金南亚市场:StockTV 印度股票数据 API 对接实战(极致实时性)
本文介绍如何通过StockTV API(countryId=14)快速接入印度股市实时行情:涵盖NSE/BSE股票、Nifty 50指数、多周期K线、涨跌幅榜、公司资料及IPO日历,支持HTTP/WS双模式,助力开发者高效构建金融应用。(239字)
1254 157
|
人工智能 算法 决策智能
OR-tools求解器使用介绍(一)
OR-tools求解器使用介绍(一)
2123 0
|
10月前
|
人工智能 自然语言处理 安全
氛围编程陷阱:为什么AI生成代码正在制造大量"伪开发者"
AI兴起催生“氛围编程”——用自然语言生成代码,看似高效实则陷阱。它让人跳过编程基本功,沦为只会提示、不懂原理的“中间商”。真实案例显示,此类项目易崩溃、难维护,安全漏洞频出。AI是技能倍增器,非替代品;真正强大的开发者,永远是那些基础扎实、能独立解决问题的人。
1198 12
氛围编程陷阱:为什么AI生成代码正在制造大量"伪开发者"
|
8月前
|
人工智能 自然语言处理 算法
AI 英语学习 APP的开发
开发AI英语学习APP进入“智能体时代”:打造听、说、读、写全交互系统。涵盖虚拟外教、写作教练、自适应阅读与多维报告,结合国产大模型与语音技术,实现低延迟、高合规的个性化学习体验。(238字)
|
消息中间件 存储 开发工具
消息队列 MQ产品使用合集之C++如何使用Paho MQTT库进行连接、发布和订阅消息
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
机器学习/深度学习 人工智能 自然语言处理
什么是智能搜索
智能搜索融合了人工智能和大数据技术,提供高效的语义理解、多模态数据处理及个性化推荐。它不仅支持传统关键词匹配,还结合NLP、机器学习等先进技术,提升信息检索的精准度与多样性。适用于电商、内容平台、多媒体及企业内部知识库等多种场景,显著优化用户体验和业务效率。
2219 2
|
存储 NoSQL 安全
8)详解 Redis 的配置文件以及数据持久化
8)详解 Redis 的配置文件以及数据持久化
651 0
|
编解码 前端开发
什么是适配?
什么是适配?
|
数据采集 搜索推荐 算法
Python基于协同过滤算法进行电子商务网站用户行为分析及服务智能推荐
Python基于协同过滤算法进行电子商务网站用户行为分析及服务智能推荐