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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 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 
相关文章
|
监控 前端开发
STM32F103标准外设库——RCC时钟(六)
STM32F103标准外设库——RCC时钟(六)
1311 0
STM32F103标准外设库——RCC时钟(六)
element ui 带上传文件的form表单
element ui 带上传文件的form表单
1022 0
如何生成RSA,RSA2密钥
密钥生成或如何使用(创建应用):[url]https://openclub.alipay.com/read.php?tid=1606&fid=72[/url] 1.密钥生成工具下载:[url]https://docs.
1898 13
|
存储 运维 监控
研发视角:一个需求应该怎么拆解与实现?
本文介绍了在软件研发过程中,开发人员接到需求后应考虑的两个核心问题:做什么(WHAT)和怎么做(HOW)。文章强调了解析需求时的共性问题,包括关注UI组件数量、数据来源、数据与UI的关联、用户行为响应、用户行为采集以及发布后的运维和监控。作者通过实例和抽象层次图说明了如何拆解和实现这些关注点,并提供了具体的操作方法和建议,以帮助开发和测试人员更好地理解和处理需求。
|
机器学习/深度学习 人工智能 算法
2024年,计算机相关专业还值得选择吗?
2024年,计算机相关专业还值得选择吗?
405 1
使用ScottPlot库在.NET WinForms中快速实现大型数据集的交互式显示
使用ScottPlot库在.NET WinForms中快速实现大型数据集的交互式显示
317 1
【51单片机】初学者必学的一个矩阵键盘基本项目——(读矩阵键盘的数字显示在LCD屏上)(7)
【51单片机】初学者必学的一个矩阵键盘基本项目——(读矩阵键盘的数字显示在LCD屏上)(7)
|
供应链 架构师 双11
供应链业务架构设计概览(一)
供应链业务架构设计概览
2093 0
|
存储 缓存 Linux
RISC-V SiFive U54内核——中断和异常详解
RISC-V SiFive U54内核——中断和异常详解
|
安全 搜索推荐 数据安全/隐私保护
如何在没有电话号码的情况下使用 Gmail
如何在没有电话号码的情况下使用 Gmail