Ich verwende NodeJS und Mongoose für eine Anwendung, die Benutzer hat. Und ich habe eine große Anzahl von Aktionen, die der Server für einen bestimmten Benutzer ausführt, abhängig von der Anfrage.Wie kann ich diese Code-Duplizierung reduzieren in NodeJS/Mongoose
Das heißt, ich habe dieses bestimmtes Codefragment in einer Vielzahl von Funktionen mit:
User.findOne({'email':req.user.email}, function (err, user) {
if (err) {
console.log('err');
res.send('Error');
}
if(!user){
console.log('err');
res.send('Error');
}
// do something with returned user
user.data = ....
...
user.save(function(err) {
if(err) {
console.log('err');
res.send('Error');
}
else {
console.log('success');
res.send('Success');
}
}
Wie Sie sehen können, gibt es eine Menge Code, repliziert. Der Code, der sich ändert, ist der Teil "tue etwas mit zurückgegebenem Benutzer". Fast alles andere (Fehlermeldungen usw.) bleibt gleich.
Also, wie kann ich diesen Teil extrahieren? Da dies mit dem Callback-Mechanismus funktioniert, gibt es einen bestimmten Weg, dies zu erreichen?
Verwenden Sie ['.update()'] (http://mongoosejs.com/docs/api.html#model_Model.update) anstelle von Startern. '.findOne()' zu verwenden, dann '.save()' zu manipulieren und aufzurufen, ist eine ziemlich schlechte Übung, die Bandbreite zu kauen, die Dinge langsam und generell voller Löcher zu machen, die zu Problemen mit den Nebenläufigkeiten bei Updates führen. Es ist ein breiteres Problem, aber nur herauszufinden, wie man diesen einen Anruf richtig anwendet, spart eine Menge Standard und bietet Ihnen viele weitere Vorteile. –