如何验证实体内部的电子邮件?
How to validate email inside entity?
我得到了这个用户实体:
class User {
id: string;
name: string;
email: string;
password: string;
....
}
我的业务规则是这样说的:
每个电子邮件一个用户
这个实体的用途是什么,它不能有任何依赖关系。我如何检查电子邮件是否唯一?
我不明白的是,谁调用实体并将数据推送到其中进行验证,谁可以访问它?(用例或存储库)。
其实什么时候需要满足这个规则呢?仅当您创建新用户时。当您从数据库中获得用户时,检查它是没有意义的。或者当您与用户进行某些操作时,例如更改电话号码、阻止等。
表示此行为不属于User
class。我建议创建某种 UserFactory
来创建新用户并向其中注入一个(或多个)策略。
public UserFactory(EmailCheckingPolicy: emailpolicy, AnotherPolicy: somethingElse);
public User create(UserData: userData) {
if (emailPolicy.isPass(userData.email)) ...
return User(userData.email, userData.name, ...)
}
}
您可以将 UserFactory
注入 UseCase。
我得到了这个用户实体:
class User {
id: string;
name: string;
email: string;
password: string;
....
}
我的业务规则是这样说的:
每个电子邮件一个用户
这个实体的用途是什么,它不能有任何依赖关系。我如何检查电子邮件是否唯一?
我不明白的是,谁调用实体并将数据推送到其中进行验证,谁可以访问它?(用例或存储库)。
其实什么时候需要满足这个规则呢?仅当您创建新用户时。当您从数据库中获得用户时,检查它是没有意义的。或者当您与用户进行某些操作时,例如更改电话号码、阻止等。
表示此行为不属于User
class。我建议创建某种 UserFactory
来创建新用户并向其中注入一个(或多个)策略。
public UserFactory(EmailCheckingPolicy: emailpolicy, AnotherPolicy: somethingElse);
public User create(UserData: userData) {
if (emailPolicy.isPass(userData.email)) ...
return User(userData.email, userData.name, ...)
}
}
您可以将 UserFactory
注入 UseCase。