首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果只有本地到数据库层的逻辑不能放入实体方法,那么我如何遵循干净的体系结构风格呢?

问如果只有本地到数据库层的逻辑不能放入实体方法,那么我如何遵循干净的体系结构风格呢?
EN

Stack Overflow用户
提问于 2022-10-05 03:06:11
回答 1查看 77关注 0票数 0

对于允许参与者执行帐户创建的用例。

因此,我在用户上创建了这些方法

代码语言:javascript
复制
 async createUser({ email, username, password }: Pick<UserObject, 'password' | 'email' | 'username'>) {
    return await this.#dbAccessor.createNewUser({ email, username, password });
  }

  //and...
  checkEmailExists(email: string): boolean;
  checkUsernameExists(username: string): boolean;

在用例层,在克服了与实用程序(如pwhashing和验证)检查的障碍之后,我使用checkEmailExists和checkUsernameExists创建了使用检查条件,如果通过,我将最终运行createUser。

然而,我的问题是,如果这些电子邮件/用户名检查在开始插入时已经过时了怎么办?为了防止这种情况,我必须将这些检查逻辑迁移到db查询中吗?如果是这样的话,这不意味着我的逻辑正在从应用程序逻辑/企业逻辑层泄漏到这些适配器中吗?

在这个场景中,像'checkAndInsertNewUser‘这样的方法是否更合适,并在数据库层实现呢?

EN

回答 1

Stack Overflow用户

发布于 2022-10-06 05:28:19

通常不建议将业务逻辑与数据库层“合并”。如果您希望或需要在某个时候替换整个数据库层,怎么办?如何测试独立于数据库的业务逻辑(决策制定)?即使您的业务逻辑涉及查询数据库,实际的决策(检查什么以及如何检查)也应该与数据库分开。在您的情况下,可能有用的,甚至必要的是使DB的查询和新项的创建/插入成为原子的事务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73955557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档