sql >> データベース >  >> NoSQL >> MongoDB

マングースエクスプレスによるハッシュ化されたパスワードの更新

    findOneAndUpdate()を使用している場合 更新するには、pre("findOneAndUpdate")を使用してみてください pre("save")と同様のパスワードを変更するミドルウェア 。 pre("findOneAndUpdate") ミドルウェアは、Model.findOndAndUpate()を使用するたびに呼び出されます モデルを更新します。

    updateOne()でも同じことができます pre("updateOne")を使用

    サンプル:

    // userSchema--------------------
    ...
    userSchema.pre('save', async function (next) {
        try {
            if (!this.isModified('password')) {
                return next();
            }
            const hashed = await bcrypt.hash(this.password, 10);
            this.password = hashed;
        } catch (err) {
            return next(err);
        }
    });
    
    userSchema.pre('findOneAndUpdate', async function (next) {
        try {
            if (this._update.password) {
                const hashed = await bcrypt.hash(this._update.password, 10)
                this._update.password = hashed;
            }
            next();
        } catch (err) {
            return next(err);
        }
    });
    
    // changepass--------------------
    ...
    if(valid){
    
        //" ?? update password and hash ?? "
        const result = await db.user.findOneAndUpdate(
            { username: req.body.username },
            { password: req.body.newPassword },
            { useFindAndModify: false }
        ); 
    }
    


    1. 他のコンテナからのDockermongoイメージ「接続が拒否されました」

    2. マングースはデータを期限切れにしますが、データベースに保持します

    3. 以前のコマンドに依存する複数のコマンドをパイプラインに再インストールできますか?

    4. MongoDBで最近削除されたドキュメントを回復する方法はありますか?