Ich habe an einer Anwendung gearbeitet, die es mir ermöglicht, Unternehmen zu einer Datenbank hinzuzufügen. Ursprünglich war mein Code reiner Spaghetti, also wollte ich ihn richtig modularisieren. Zu diesem Zweck habe ich Routen, einen Controller und einen Dao hinzugefügt.Probleme mit Rückrufen, Fehler und MongoDB
Dies ist, wie mein Code jetzt
Routen
app.post('/loadcompanies', (req, res)=> {
companiesController.loadcompany(req.body, (results)=>{
console.log(results);
res.send(200, "working!");
})
})
-Controller
module.exports.loadCompany = (body, callback)=>{
companiesDao.loadCompany(body, callback);
}
Dao
module.exports.loadCompany = (company, callback)=>{
MongoClient.connect(conexionString, (err, database) => {
if (err) console.log(err);
db = database;
console.log(company);
db.collection('companies').insert(company, (err, result)=>{
callback({message:"Succesfully loaded company", company:result});
});
})
}
sieht
Meine aktuelle Sorge ist, dass das Arbeiten mit Fehlern beim Modularisieren so verwirrend ist. Ich habe versucht, eine try-catch-Methode um die db einfügen und werfen und Fehler, wenn es eine, aber das scheint nicht zu funktionieren. Andere Dinge, die ich versucht habe, um den Fehler in der Callback-Rückkehr, wie folgt aus:
if (err) callback (err, null);
aber ich am Ende immer ein „Satz kann nicht Header, nachdem sie gesendet werden.“ Error.
Wie würden Sie in dieser Situation mit Fehlern umgehen? Zum Beispiel für den Fall, dass jemand versucht, einen doppelten Eintrag in einem eindeutigen Element hinzuzufügen.
Rückrufe und Fehlerprüfung immer schwierig gewesen, würde ich Ich schlage vor, Sie schauen in die Verwendung von Versprechen, und dann in async/erwarten, um die Dinge noch besser zu machen. – Keith
Als Addendum, in meiner ursprünglichen Spaghetti-Anwendung hatte ich es nur Res 503 senden, wenn der Mongodb hatte einen Fehler, und das war, dass – xai2
Ich sehe Versprechen und async erwarten sicher, da Rückrufe können wirklich verwirrend sein haha , aber die Beispiele für diese Fälle scheinen hauptsächlich Callbacks zu sein. Danke! – xai2