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

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

中文文档摘要:

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

文档

安装

$ 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 
相关文章
|
4月前
|
前端开发 JavaScript API
JavaScript异步编程:从Promise到async/await
JavaScript异步编程:从Promise到async/await
504 204
|
2月前
|
前端开发 JavaScript API
js实现promise常用场景使用示例
本文介绍JavaScript中Promise的6种常用场景:异步请求、定时器封装、并行执行、竞速操作、任务队列及与async/await结合使用,通过实用示例展示如何优雅处理异步逻辑,避免回调地狱,提升代码可读性与维护性。
248 10
|
3月前
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
394 1
|
8月前
|
存储 JavaScript 前端开发
在NodeJS中使用npm包进行JS代码的混淆加密
总的来说,使用“javascript-obfuscator”包可以帮助我们在Node.js中轻松地混淆JavaScript代码。通过合理的配置,我们可以使混淆后的代码更难以理解,从而提高代码的保密性。
783 9
|
存储 JavaScript NoSQL
Node.js新作《循序渐进Node.js企业级开发实践》简介
《循序渐进Node.js企业级开发实践》由清华大学出版社出版,基于Node.js 22.3.0编写,包含26个实战案例和43个上机练习,旨在帮助读者从基础到进阶全面掌握Node.js技术,适用于初学者、进阶开发者及全栈工程师。
228 9
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API
|
4月前
|
前端开发 JavaScript API
一文吃透 Promise 与 async/await,异步编程也能如此简单!建议收藏!
在前端开发中,异步编程至关重要。本文详解了同步与异步的区别,通过生活化例子帮助理解。深入讲解了 Promise 的概念、状态及链式调用,并引入 async/await 这一语法糖,使异步代码更清晰易读。还介绍了多个异步任务的组合处理方式,如 Promise.all 与 Promise.race。掌握这些内容,将大幅提升你的异步编程能力,写出更优雅、易维护的代码,助力开发与面试!
271 0
一文吃透 Promise 与 async/await,异步编程也能如此简单!建议收藏!
|
前端开发 JavaScript 开发者
Async 和 Await 是基于 Promise 实现
【10月更文挑战第30天】Async和Await是基于Promise实现的语法糖,它们通过简洁的语法形式,借助Promise的异步处理机制,为JavaScript开发者提供了一种更优雅、更易于理解和维护的异步编程方式。
281 1