2

我正在尝试将预处理程序分配给猫鼬保存事件并在保存之前加密文档:

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 的回答,我无法编辑this

4

2 回答 2

3

我相信调用next(self)将使下一个处理程序认为存在错误并且不保存文档。

你应该打电话next()

查看 “错误处理”下的http://mongoosejs.com/docs/middleware.html

于 2013-02-16T20:21:35.127 回答
1

我想通了:Benoir 的回答 + 您不能在文档中添加或删除属性,除非它们在架构中定义。

于 2013-02-17T01:13:03.823 回答