如何使用预存在Mongoose中的文件来更改文件

我正在尝试将预处理程序分配给mongoose保存事件,并在保存之前对文档进行encryption:

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

我相信调用next(self)会使下一个处理程序认为出现错误而不保存文档。

你只需要调用next()

查看http://mongoosejs.com/docs/middleware.html下的“error handling”

我find了它:Benoir的答案+你不能添加或从文档中删除属性,除非它们在架构中定义。