2

pre ハンドラーを mongoose 保存イベントに割り当て、保存する前にドキュメントを暗号化しようとしています。

userShecma.pre('save', function(next) {
    var self = {};
    self.Key = this.password;;
    self.EncriptedString = encrypt.encrypt(JSON.stringify(this), this.password);
    self.user = this.user
    self.decrypt = function() {
        var user = JSON.parse(encrypt.decrypt(this.EncriptedString, this.Key));
        for(var key in user) {
            this[key] = user[key];
        }
    }
    for(var key in this){
        delete this[key];
    }
    for(var key in self){
        this[key] = self[key];
    }
    console.log(this);
    next(self);
});

さまざまなことを試してみましたが、エラーが発生することもあれば、ドキュメントが変更されないこともあります。

さらに情報が必要な場合はお知らせください、
アリ

編集: Benoir's Answer を試しましたが、編集できませんthis

4

2 に答える 2

3

を呼び出すnext(self)と、次のハンドラーはエラーが発生したと判断し、ドキュメントを保存しないと思います。

あなたはちょうど電話する必要がありますnext()

「エラー処理」の下のhttp://mongoosejs.com/docs/middleware.htmlを見てください

于 2013-02-16T20:21:35.127 に答える
1

私はそれを理解しました:ベノワールの答え+スキーマで定義されていない限り、プロパティをドキュメントに追加またはドキュメントから削除することはできません。

于 2013-02-17T01:13:03.823 に答える