Sto cercando di creare un gestore pre che disinfetta tutti i dati prima della sua scritta al MongoDB vedere: http://mongoosejs.com/docs/middleware.htmldati Sanificazione prima di salvare a Mongoose
Ho provato quanto segue per ottenere ogni proprietà di essere in grado di disinfettare esso :
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();
})
Qualsiasi degli approcci sopra i risultati in qualcosa di simile al seguente:
Questo è l'output di:
for(var key in obj) {
console.log(obj[key])
}
https://gist.github.com/daslicht/cb855f53d86062570a96
Qualsiasi sanno come ottenere ogni singola proprietà modo che io possa sterilizzare, per favore?
~ Marc
[EDIT] Ecco una possibile soluzione, comunque sarebbe più pulito di averlo direttamente sul livello di regime in quanto questo sarebbe più DRY
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);
La fonte delle uscite sembra essere il fatto che "questa" è un'istanza del modello. Quindi ho bisogno di ottenere i dati grezzi in qualche modo e sanitarli e scriverli di nuovo – daslicht
Realmente ho fatto questo usando un middleware espresso. Ancora più ASCIUTTO. – fakewaffle
Grazie per la risposta, ho persino pensato a questo, ma quando si utilizza un middleware espresso, è necessario aggiungerlo manualmente a ogni percorso da proteggere o ad un middleware globale. Non sarebbe bello se potessimo dirlo come Mongoose Plugin?Sono curioso, ti piace condividere il tuo approccio Middleware, per favore? – daslicht