前言
LoopBack是一个基于Node.js的可扩展开发框架,可以用于构建REST APIs、微服务和其他后端应用程序。而TypeORM是一款开源的TypeScript ORM框架,用于关系数据库中的对象映射。如果将两者结合起来,就可以获得一个基于ORM的REST API后端应用。
在这篇文章中,我们将介绍如何使用npm包loopback4-extension-typeorm,它为我们提供了一个更简单的方式在LoopBack中使用TypeORM。
安装
首先,我们需要创建一个新的LoopBack应用程序。请确保您已经安装了LoopBack CLI。
lb4 app my-app
在安装TypeORM之前,我们需要先安装loopback4-extension-typeorm包。
npm i --save loopback4-extension-typeorm
接下来,我们需要安装TypeORM和所需的数据库驱动程序。
npm i --save typeorm pg
配置
现在,我们需要配置loopback4-extension-typeorm。打开src/index.ts
文件并添加以下代码:
-- -------------------- ---- ------- ------ - ----------------- - ---- ------------------------------ -- --- ------------ - -- --- --- ------------------- ----- ----- ---------- ------------- ---- --- ----- ------------ ----- ----- ----- --------- --------- --------- --------- --------- --------- --- -------- -- --- --
这里我们可以指定TypeORM数据源的名称、连接器(这里是 PostgreSQL)、连接参数和在应用程序中需要使用的实体。
请注意,在这个示例中,我们将entities
设置为空数组。接下来,我们将在一个单独的文件中定义我们的实体。
在src
文件夹中,我们创建一个新文件models.ts
。添加以下代码:
-- -------------------- ---- ------- ------ -------- ----------------------- ------- ---- ---------- --------- ------ ----- ------ - ------------------------- --- ------- --------- ---------- ------- --------- --------- ------- -
在这里,我们创建了一个名为“Person”的实体,其中包含三个字段:id
、firstName
和lastName
。
接下来,在src/index.ts
文件中,我们需要将实体添加到数据源中。
-- -------------------- ---- ------- ------ - ------ - ---- ----------- -- --- --- ------------------- ----- ----- ---------- ------------- ---- --- ----- ------------ ----- ----- ----- --------- --------- --------- --------- --------- --------- --------- -------- -- ---
数据库迁移
我们已经配置好了数据源和实体,接下来我们需要使用TypeORM进行数据库迁移。我们可以使用TypeORM CLI轻松完成此操作。
为了使用TypeORM CLI,我们需要在src
文件夹中创建一个TypeORM配置文件。添加以下代码到src/typeorm.config.ts
文件:
-- -------------------- ---- ------- ------ - ---------------------- -------------------- - ---- ------------------ ------ - ------ - ---- ----------- ------ ----- -------------------- ---------- --------------------- - ----------------------- -------------------- - ------ - ----- ----------- ----- ------------ ----- ----- --------- --------- --------- --------- --------- --------- --------- --------- ------------ ------ -- - -
在这里,我们创建了一个名为“TypeOrmConfigService”的服务,它会返回TypeORM配置选项。请注意,我们将synchronize
选项设置为false
,以禁止TypeORM自动在数据库中创建实体。
接下来,我们需要安装TypeORM CLI。
npm i -g typeorm
用TypeORM CLI创建数据库迁移。
typeorm migration:create -n MigrationName
这将创建一个名为“MigrationName”的空迁移文件。
接下来,我们需要在迁移中编写数据库表架构代码。在迁移文件中添加以下代码:
-- -------------------- ---- ------- ------ -------------------- ------------ ---- ---------- ------ ----- ------------- ---------- ------------------ - ------ ----- --------------- ------------- ------------- - ----- --------------------------- ------- ----- --------- -------- - - ----- ----- ----- ---------- ---------- ----- ------------ ----- ------------------- ------------ -- - ----- ------------- ----- --------------- ----------- ------ -- - ----- ------------ ----- --------------- ----------- ------ -- -- --- ------ - ------ ----- ----------------- ------------- ------------- - ----- ------------------------------- ------ - -
在这里,我们创建了一个名为“person”的表,并定义了三个字段:id
、first_name
和last_name
。请注意,在这个示例中,我们使用了SQL语法,而不是TypeORM的架构创建API。
最后,我们可以运行我们的数据库迁移。
typeorm migration:run
现在,我们的实体将在数据库创建表,并且我们已准备好在LoopBack应用程序中使用它。
使用
我们已经完成了TypeORM配置和数据库架构,现在我们可以轻松使用它。首先,在src/controllers/person.controller.ts
文件中创建一个控制器。
-- -------------------- ---- ------- ------ - ---------- - ---- ----------------------- ------ - ---- ----- - ---- ----------------- ------ - ------ - ---- ------------ ------ - ---------------- - ---- ------------------ ------ ----- ---------------- - ------------ ---------------------------------- ------- ----------- ----------------- - -- -------------------- ----- --------------------------------- --- -------- --------------- - ------ ----------------------------- - -
在这里,我们配置了一个名为“PersonController”的控制器,并使用PersonRepository
来处理我们的实体。我们还定义了一个findById
方法,可以查找数据库中的单个实体。
接下来,在src/repositories/person.repository.ts
文件中创建一个存储库。
-- -------------------- ---- ------- ------ - --------------------- - ---- ----------------------- ------ - ------ - ---- ------------ ------ - ----------------- - ---- ------------------------------ ------ - ------ - ---- ----------------- ------ ----- ---------------- ------- ---------------------- ------- ------ ------------------- - - ------------ ------------------------- ----------- ------------------ - - ------------- ------------ - -
在这里,我们使用DefaultCrudRepository
来处理CRUD操作,并使用TypeOrmDataSource
连接到我们的数据库。
现在,我们可以使用我们的API。启动服务器,进入Swagger UI,查找PersonController
中的findById
方法并尝试查询实体。
结论
在这篇文章中,我们介绍了如何使用npm包loopback4-extension-typeorm在LoopBack中使用TypeORM。我们配置了数据源、实体和存储库,并使用TypeORM CLI进行了数据库迁移。最后,我们写了一个控制器和存储库,以便使用我们的API。
此外,我们在LoopBack中使用TypeORM的好处是:
- 使用TypeScript和Decorator来定义实体,具有类型安全性和更好的代码提示。
- LoopBack的通用CRUD API扩展了TypeORM的ORM功能。
- LoopBack提供了一些有用的封装API,使我们的开发工作更加高效。
在使用它时,请注意保持数据库迁移的历史记录并定期运行它们以保持数据库的正确性。
希望这篇npm包loopback4-extension-typeorm使用教程对你有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600567fa81e8991b448e41f4