在前端开发中,我们经常需要处理数据,而数据通常都是由不同类型的实体组成的。实体是指定义了数据结构和行为的对象,这些对象可以是用户、订单、产品等。
为了方便地创建、读取、更新和删除实体数据,我们可以使用 webiny-entity,这是一个功能强大的 npm 包,提供了一系列实用的工具和函数。在本教程中,我们将介绍如何使用 webiny-entity 创建和管理实体。
安装
我们可以通过 npm 安装 webiny-entity 包:
npm install webiny-entity
我们也可以使用 yarn:
yarn add webiny-entity
创建实体
首先,我们需要定义实体的属性和方法。在 webiny-entity 中,我们可以通过 Entity
类来定义实体:
-- -------------------- ---- ------- ------ - ------ - ---- ---------------- ----- ---- ------- ------ - ------------- - -------- -- ---- -------------------------------------------------------- ------------------------------------------------------- ----------------------------------------------------------- -- ---- ------------------- - ------------- - -- -- -------- ----- --------- - -------- ---- ------------------------------- -- - ------ ------------------ ------------------ --- - -
在上面的代码中,我们创建了一个名为 User
的实体,并定义了它的属性和方法。属性用于存储实体的数据,方法用于处理数据,并提供一些操作和计算。
在这个例子中,我们定义了 firstName
、lastName
和 email
三个属性,分别表示用户的名字、姓氏和电子邮件地址。我们还定义了一个 setFullName()
方法,用于生成用户的全名。
我们可以通过创建实体的实例来创建一个实体:
const user = new User();
现在,我们可以使用 user
来访问用户的属性和方法:
user.firstName = "John"; user.lastName = "Doe"; user.email = "john.doe@example.com"; console.log(user.fullName); // John Doe
验证数据
webiny-entity 提供了一系列验证器,用于验证实体的属性。我们可以使用这些验证器来确保实体的数据符合我们的预期。
在我们的示例中,我们使用了 char()
、email()
和 setValidators()
方法来设置属性的值类型和验证规则。
char()
方法用于定义字符型数据;email()
方法用于定义电子邮件地址;setValidators()
方法用于设置验证规则。
例如,我们定义了 firstName
属性需要验证必须填写:
this.attr("firstName").char().setValidators("required");
如果我们尝试将 firstName
属性设置为空:
user.firstName = "";
那么 webiny-entity 将抛出一个错误:
Attribute "firstName" failed required validator.
我们可以使用 validate()
方法来手动验证实体:
try { user.validate(); } catch (error) { console.error(error); }
如果有验证失败,则 validate()
方法将抛出一个错误。
保存和删除实体
当我们创建完一个实体实例并对其进行修改之后,我们需要将其保存到数据库中。webiny-entity 提供了 save()
方法来完成这项任务。在调用 save()
方法之前,我们需要设置实体的存储位置。
例如,我们可以使用 EntityStorageDynamo
来将实体保存到 AWS DynamoDB:
-- -------------------- ---- ------- ------ - ------------------- - ---- ------------------------ ----- ------- - --- --------------------- ------- ----------------- --------- ------------------------ ------ -------- --- ----- ---- - --- ------- -------------- - ------- ------------- - ------ ---------- - ----------------------- ----- -------------------
我们可以使用 delete()
方法删除实体:
await user.delete(storage);
搜索和查询实体
webiny-entity 还提供了一些高级功能,例如搜索和查询实体。我们可以使用 EntityQuery
类来构建查询语句,并使用 find()
方法来执行查询。例如:
import { EntityQuery } from "webiny-entity"; const query = new EntityQuery(User); query.sort("firstName").desc(); query.limit(10); const results = await query.find(storage);
在上面的代码中,我们创建一个名为 query
的查询对象,查询名为 User
的实体。我们使用 sort()
方法和 desc()
方法设置排序规则,使用 limit()
方法设置返回结果数量的上限。然后,我们使用 find()
方法执行查询,并将结果存储在一个名为 results
的数组中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600672df0520b171f02e1d27