我想创建一个预处理器,其前进行消毒所有数据之前其写入到MongoDB的 看到:http://mongoosejs.com/docs/middleware.html消毒的数据保存到猫鼬
我试过下面让每个属性才能够清理动作:
blogSchema.pre('save', function (next) {
var obj = this;
console.log(obj)//-> https://gist.github.com/daslicht/70e0501acd6c345df8c2
// I've tried the following to get the single items :
Object.keys(obj).forEach(function (key) {
console.log('Keys: ',obj[key]);
});
//and:
for(var key in obj) {
console.log(obj[key])
}
//and:
_.each(self , function(value, key, list){
console.log('VALUE:',key);
})
next();
})
任何上述方法的结果转换成类似如下:
那的输出:
for(var key in obj) {
console.log(obj[key])
}
https://gist.github.com/daslicht/cb855f53d86062570a96
任何知道如何让每一个单一的财产,这样我可以清理它,好吗?
〜马克
[编辑] 这里是一个可能的解决方法,反正这将是清洁有它直接在计划层面,因为这将是更加干燥
var post = {
createdAt : req.body.date,
createdBy : req.user.username,
headline : req.body.headline,
content : req.body.content
}
_.each(post , function(value, key, list){
post[key] = sanitize(value).xss(); //its the sanetize function of node validator
})
var item = new Blog(post);
输出的来源是“this”是模型的实例。所以我需要以某种方式获取原始数据并将其理解并将其写回 – daslicht
我实际上是使用快速中间件完成的。甚至更干。 – fakewaffle
感谢您的回答,我甚至想到了这一点,但是在使用Express Middleware时,我们必须手动将其添加到每条受保护路径或全球中间件。如果我们可以直接使用Mongoose Plugin,那会不会很好?我很好奇,你想分享一下你的中间件方法吗? – daslicht