首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >值对象静态工厂

值对象静态工厂
EN

Stack Overflow用户
提问于 2021-11-14 20:11:26
回答 2查看 110关注 0票数 0

我现在有些问题,我想知道你的意见。首先,我有一个userPassword,它表示用户域模型中的值对象。在创建我的userPassword对象时,我想验证2种情况:

  • 不为密码

的空值

因此,

  • 哈希给定的值,我不知道实现它的最佳方法。现在问题暴露了,看看下面的代码:

导出类UserPassword {私有只读值:字符串私有构造函数(值: this.value = value }公共getValue():string {返回this.value } // My静态工厂,其中我希望应用验证情况静态创建(密码:字符串):UserPassword{ //需要实现}私有异步hashPassword(密码: string):承诺{返回等待bcrypt.hash(密码),)}异步comparePassword(密码:字符串):承诺{ let散列: string = this.value返回等待bcrypt.compare(密码,散列)}

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-14 22:05:34

为了验证目的,我只是在创建密码对象之前做了一些验证。因为我认为它总是与对象构造中定义的验证逻辑相关。所以我的解决方案是:

代码语言:javascript
复制
export class UserPassword {
    private readonly value:string

     constructor(value: string) {
        if (value === "") {
            throw new UserInputError("Password must be filled")
        }
        else {
            this.hashPassword(value).then(r => console.log(r))
            this.value =  value
        }
   }
    public getValue():string {
        return this.value
    }

    private async hashPassword(password: string):Promise<string>{
        return bcrypt.hash(password,10)
    }
    async comparePassword(password:string):Promise<boolean> {
        let hashed: string = this.value
        return  bcrypt.compare(password, hashed)
    }
}
票数 0
EN

Stack Overflow用户

发布于 2021-11-15 22:08:01

像这样吗?我的意思是,如果你想确定,不要在内存中存储密码的清晰值。

代码语言:javascript
复制
// My static factory in which i want to apply my validations cases

  static async create(password: string):UserPassword {
      if (!password || password.trim().length() == 0) {
           throw Exception("password not valid")
      }
      var hash = await bcrypt.hash(password,10)
      return new UserPassword(hash)
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69966787

复制
相关文章

相似问题

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