tôi đang cố gắng để tạo ra một handler trước đó sanitizes tất cả các dữ liệu trước khi nó ghi vào MongoDB xem: http://mongoosejs.com/docs/middleware.htmldữ liệu Vệ sinh trước khi lưu để Mongoose
Tôi đã thử những điều sau đây để có được mỗi tài sản để có thể khử trùng nó :
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();
})
Bất kỳ phương pháp trên kết quả vào một cái gì đó như sau:
Thats đầu ra của:
for(var key in obj) {
console.log(obj[key])
}
https://gist.github.com/daslicht/cb855f53d86062570a96
Bất kỳ biết làm thế nào để có được mỗi tài sản duy nhất để tôi có thể khử trùng nó, xin vui lòng?
~ Marc
[EDIT] Dưới đây là một cách giải quyết có thể, dù sao nó sẽ sạch hơn để có nó trực tiếp vào trình độ Đề án vì đây sẽ là DRY hơn
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);
Nguồn của các đường nối đầu ra là thực tế 'this' là một Ví dụ của Mô hình. Vì vậy, tôi cần phải lấy dữ liệu thô bằng cách nào đó và vệ sinh nó và viết nó trở lại – daslicht
Tôi thực sự đã làm điều này bằng cách sử dụng một middleware thể hiện. Thậm chí nhiều DRY. – fakewaffle
Cảm ơn bạn đã trả lời, tôi thậm chí còn nghĩ về điều này, nhưng khi sử dụng một Middleware Express, chúng tôi phải thêm nó theo cách thủ công vào từng tuyến đường để được bảo vệ hoặc quảng cáo trung gian toàn cầu. Nó sẽ không được tốt đẹp nếu chúng ta có thể trực tiếp như Mongoose Plugin?Tôi tò mò, bạn có muốn chia sẻ cách tiếp cận Middleware của bạn không? – daslicht