ハッシュを作成する関数


ハッシュの作成とハッシュの検証に使用する関数を作成するには、次のモジュールをインストールする必要があります.
yarn add bcrypt

モデルメソッドの作成


「モデルメソッド」は、モデルですぐに使用できる関数を指します.モデルメソッドには、次の2つがあります.
  • インスタンスメソッド=インスタンス(割り当てられた部分)で使用可能な関数
  • 静的方法=モデルで使用可能な関数
  • インスタンスメソッド、静的メソッドの区別

    import mongoose, {Schema} from "mongoose"
    import bcrypt from "bcrypt"
    
    const UserSchema = new Schema({
        username: String,
        hashedPassword: String,
    });
    
    UserSchema.methods.setPassword = async //인스턴스
    function(password){
        const hash = await bcrypt.hash(password, 10);
        this.hashedPassword = hash;
    }
    
    UserSchema.methods.checkPassword = async //인스턴스
    function(password){
        const result = await bcrypt.compare(password, this.hashedPassword);
        return result; //true/ false
    }
    
    UserSchema.static.findByUsername = //스태틱
    function(username){
        return this.findOne({username});
    };
    
    const User = mongoose.model("User", UserSchema);
    export default User;