前言
在前端开发过程中,我们常常需要使用 mock 数据进行开发和测试。而使用 fixtures 工具可以方便地快速生成 mock 数据。在 TypeORM 中,我们可以使用 @clarkieryan/typeorm-fixtures 这个 npm 包来生成 fixtures 数据。本文将介绍如何使用该 npm 包进行 mock 数据生成。
安装
在项目中安装 @clarkieryan/typeorm-fixtures:
npm install @clarkieryan/typeorm-fixtures --save-dev
配置
创建 fixtures 文件
创建一个 fixtures 文件,比如 user.fixture.json
。文件内容应该包含用于 mock 的数据,并遵循 JSON 格式。
[ { "username": "testuser", "email": "testuser@example.com" } ]
配置 TypeORM
TypeORM 中,使用 import 语句注册实体和连接。在使用 fixtures 之前,应该先创建一个 typeorm.config.js
文件(如果已经存在,可以跳过此步骤):
-- -------------------- ---- ------- -------------- - - ----- -------- ----- ------------ ----- ----- --------- ------- --------- --- --------- ------- --------- ---------------------- ------------ ---- --
这个配置文件中 entities
是一个 glob,它将所有 Entity 文件加载到 TypeORM 中。synchronize
选项会在创建表格之前检查数据库模式是否正确。
使用 fixtures
在使用 fixtures 之前,我们需要先保证 TypeORM 的实体模型已经在项目中正确定义。假设我们有一个用户模型:
-- -------------------- ---- ------- --------- ------ ----- ---- - ------------------------- --- ------- --------- --------- ------- --------- ------ ------- -
接下来,在测试文件中使用 fixtures:
-- -------------------- ---- ------- ------ - ---------------- - ---- ---------- ------ - ------------ - ---- -------------------------------- ------ - ---- - ---- ------------------------- ------ ------ ---- ------------------- ------------------ ------ -- -- - --- ----------- --------------- -- -- - ---------- - ----- ------------------------- --- -------------- -- -- - ----- ------------------- --- ---------- ---- ---------- ----- -- -- - ----- ------------------------ - ---- -- ---------------------------------- ----- ----- - ----- -------------------------------------- -------------------------------- --- ---
这里我们导入了 loadFixtures
方法,并传入了 TypeORM 的连接,要填写的实体以及 fixtures 文件的路径。
最后我们可以使用 getRepository(User).find()
方法查询数据库中的用户数量,如果正确加载 fixtures 数据,那么数量应该为 1。
总结
@clarkieryan/typeorm-fixtures 提供了简单易用的 fixtures 工具,它可以方便地生成 mock 数据。通过本文,我们可以了解如何使用该 npm 包生成 fixtures 数据和如何在 TypeORM 中使用它。希望本文能帮助读者更好地了解 fixtures 并在实践中实现更好的效果。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066b6051ab1864dac67282