Sequelize 加强版:TypeORM

引言

Sequelize 是一个非常流行的 Node.js ORM 库,它允许开发者使用 JavaScript 对数据库进行操作,支持多种数据库,如 MySQL、PostgreSQL、SQLite、MSSQL 等。然而,Sequelize 也存在一些不足之处,如缺少类型检查、复杂的查询语句等。

TypeORM 是一个新兴的 Node.js ORM 库,它基于 TypeScript,提供了更加强大的类型检查和更加简洁的查询语句。本文将介绍 TypeORM 的使用方法,以及与 Sequelize 的对比。

安装

使用 npm 安装 TypeORM:

--- ------- ------- ----------------

其中,reflect-metadata 是必须的依赖项。

连接数据库

首先,需要在项目中创建一个 ormconfig.json 文件,用于配置数据库连接信息。例如,连接 MySQL 数据库:

-
  ------- --------
  ------- ------------
  ------- -----
  ----------- -------
  ----------- -----------
  ----------- -------
  -------------- -----
  ---------- ------
  ----------- ----------------------
-

其中,entities 属性指定了实体类所在的目录,这里假设实体类放在 src/entity 目录下。

然后,在应用程序中创建一个连接:

------ - ---------------- - ---- ----------

------------------
  -------- -- ----------------------- ---------------
  -------------- -- ----------------------- -------- --------

定义实体类

TypeORM 中的实体类与 Sequelize 中的模型类类似,用于描述数据表的结构。例如,定义一个 User 实体类:

------ - ------- ----------------------- ------ - ---- ----------

---------
------ ----- ---- -
  -------------------------
  --- -------

  ---------
  ----- -------

  ---------
  ---- -------

  ---------
  ------ -------
-

其中,@Entity() 装饰器表示该类为实体类,@PrimaryGeneratedColumn() 装饰器表示该属性为主键,@Column() 装饰器表示该属性为字段。

查询数据

TypeORM 提供了更加简洁的查询语句,例如,查询所有用户:

------ - ------------- - ---- ----------
------ - ---- - ---- ----------------

----- -------------- - --------------------
----- ----- - ----- ----------------------
-------------------

查询指定用户:

----- ---- - ----- --------------------------
------------------

查询年龄大于 18 的用户:

----- ----- - ----- --------------------- ------ - ---- ------------ - ---
-------------------

TypeORM 还支持链式调用,例如,查询年龄大于 18 并且邮箱以 gmail.com 结尾的用户:

----- ----- - ----- --------------
  ---------------------------
  ---------------- - ------ - ---- -- --
  --------------------- ---- -------- - ------ ------------ --
  -----------
-------------------

更新数据

更新数据也非常简单,例如,将 id 为 1 的用户的邮箱修改为 new-email@gmail.com

----- ---- - ----- --------------------------
---------- - ----------------------
----- --------------------------

删除数据

删除数据也非常简单,例如,删除 id 为 1 的用户:

----- -------------------------

总结

TypeORM 是一个非常强大的 Node.js ORM 库,它提供了更加强大的类型检查和更加简洁的查询语句,使用起来非常方便。与 Sequelize 相比,TypeORM 更加适合 TypeScript 项目,可以提高代码的可维护性和可读性。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/662e6bc6d3423812e4c0f920


猜你喜欢

  • 如何进行 Rust 代码的性能优化

    Rust 是一种强类型、并发安全、内存安全的系统编程语言,它被广泛应用于 Web 开发、游戏开发、嵌入式系统等领域。在 Rust 中,性能优化是一项非常重要的任务,因为 Rust 的目标之一就是提供高...

    6 个月前
  • Babel7 的重大更新及使用指南

    Babel 是一个广泛使用的 JavaScript 编译器,它可以将 ES6+ 的代码转换为向后兼容的 JavaScript 代码,以便在不支持最新语法的浏览器和环境中运行。

    6 个月前
  • 如何构建插件及中间件机制:详解 Fastify 框架的体系结构

    Fastify 是一款快速、低开销、可扩展的 Node.js Web 框架。它提供了一个插件和中间件机制,让开发者可以方便地扩展框架的功能。本文将详解 Fastify 的插件和中间件机制,并提供示例代...

    6 个月前
  • Jest + Enzyme + React 入门与思考

    前言 在前端开发中,测试是非常重要的一环。而在 React 开发中,Jest 和 Enzyme 是两个非常流行的测试工具。本文将介绍 Jest 和 Enzyme 的基本用法,并通过示例代码帮助读者更好...

    6 个月前
  • 解决 CSS 自适应布局的 Flexbox 方案

    在前端开发中,自适应布局是一个非常重要的概念。但是,传统的 CSS 布局方案往往需要大量的媒体查询和计算,而且在复杂的布局中经常会出现问题。为了解决这些问题,CSS3 引入了 Flexbox 布局方案...

    6 个月前
  • ES7 中的对象解构赋值使用详解

    在 ES6 中,我们已经学习了如何使用对象解构赋值来简化代码和提高代码可读性。而在 ES7 中,进一步增加了一些新的特性,让对象解构赋值更加强大和易用。本文将详细介绍 ES7 中的对象解构赋值的使用方...

    6 个月前
  • ESLint 错误:Parsing error: Unexpected token < 的解决方案

    ESLint 错误:Parsing error: Unexpected token &lt; 的解决方案 在进行前端开发时,使用 ESLint 工具对代码进行语法检查是很常见的做法。

    6 个月前
  • ES9 待改善的问题

    ES9,也称为ECMAScript 2018,是JavaScript语言的最新标准。它引入了一些新的功能,如异步迭代器和Promise.prototype.finally()等。

    6 个月前
  • 利用 chai-as-promised 扩展 Chai 的 Promise 测试功能

    利用 chai-as-promised 扩展 Chai 的 Promise 测试功能 在前端开发中,Promise 是处理异步操作的一种方式,而 Chai 则是一个流行的测试库。

    6 个月前
  • 基于 Mocha 的 API 接口自测实践

    在前端开发中,接口测试是必不可少的一环。而 Mocha 是一款流行的 JavaScript 测试框架,可以用于编写前端自动化测试用例。在本文中,我们将介绍如何使用 Mocha 进行 API 接口自测实...

    6 个月前
  • AngularJS 中使用 ng-options 生成下拉列表的方法介绍

    在 AngularJS 中,ng-options 是一个非常常用的指令,它可以用来生成下拉列表。下面我们将详细介绍如何使用 ng-options 指令来生成下拉列表,并给出示例代码。

    6 个月前
  • 使用 React 构建可扩展的 SPA 应用

    React 是一个非常流行的 JavaScript 库,用于构建用户界面。它被广泛应用于构建单页面应用程序(SPA),因为它能够提供高效、可扩展和易维护的代码。 在本文中,我们将介绍如何使用 Reac...

    6 个月前
  • 如何在 Material Design 中使用 ViewPager 实现 Tab 导航

    前言 Material Design 是 Google 推出的一种设计语言,旨在为用户提供更加直观、更加美观的界面体验。其中,Tab 导航是一种常见的组件,可以帮助用户快速切换不同的页面。

    6 个月前
  • PWA 技术探究 — 服务端渲染 (SSR) 实践

    前言 PWA (Progressive Web App) 技术已经成为了现代 Web 开发的热门话题。它通过使用一系列的技术和方法,使得 Web 应用能够更好地模拟原生应用的体验,例如离线缓存、推送通...

    6 个月前
  • ECMAScript 2020:如何使用 Array.prototype.at() 方法

    在 ECMAScript 2020 中,新增了一个 Array.prototype.at() 方法,它可以让你更方便地访问数组中的元素。本文将详细介绍这个方法的使用方法,包括示例代码和实际应用场景。

    6 个月前
  • Redux 错误排查指南:使用 Redux DevTools 定位问题

    Redux 是一个流行的 JavaScript 应用程序状态管理库,它提供了一种可预测的状态管理机制,使得应用程序的状态变化变得可追踪和可控。然而,当我们在使用 Redux 时,我们可能会遇到一些问题...

    6 个月前
  • Kubernetes 在云原生应用开发中的应用实践及最佳实践

    什么是 Kubernetes? Kubernetes 是一个开源的容器编排平台,它可以自动化应用程序的部署、扩展和管理。使用 Kubernetes,开发人员可以将应用程序打包成容器,并将它们部署到一个...

    6 个月前
  • 如何在 Chai 中实现深度递归比较两个 Object 对象

    在前端开发中,我们经常需要比较两个对象是否相等。但是,在 JavaScript 中,对象比较并不是一件简单的事情,因为对象可能包含嵌套对象、数组、函数等。因此,我们需要一种方法来实现深度递归比较两个 ...

    6 个月前
  • 如何利用 Mocha 进行 Koa2 应用程序的 Web 端集成测试

    在前端开发中,集成测试是一项非常重要的工作。它可以帮助我们检查系统的各个组成部分是否能够正常协作。在 Koa2 应用程序中,我们可以使用 Mocha 进行 Web 端集成测试。

    6 个月前
  • 使用 SASS 编写 CSS3 动画效果

    在前端开发中,CSS3 动画效果已经成为了提高用户体验的重要手段。而 SASS 作为 CSS 的预编译语言,可以让我们更方便地编写复杂的 CSS 样式和动画效果。本文将介绍如何使用 SASS 编写 C...

    6 个月前

相关推荐

    暂无文章