Je me demandais, quelle est la meilleure pratique pour garder le code DRY lors du développement node.js api avec des appels de base de données. J'ai l'impression d'avoir beaucoup de code répété.node.js api garder le code sec
Par exemple, regardez ceci:
app.get('/api/users_count', function (req,res) {
pool.connect(function(err, client, done) {
if(err) {
return console.error('error fetching client from pool', err);
}
client.query('SELECT count(*) FROM users;', function(err, result) {
done();
if(err) {
return console.error('error running query', err);
}
res.json({"users count": result.rows[0].count});
});
});
});
et ceci:
app.get('/api/users/:id', function (req,res) {
pool.connect(function(err, client, done) {
if(err) {
return console.error('error fetching client from pool', err);
}
client.query('SELECT name FROM users WHERE id=$1;',req.param.id, function(err, result) {
done();
if(err) {
return console.error('error running query', err);
}
res.json({"user name": result.rows[0].name});
});
});
});
Comment puis-je éviter la répétition de la remise d'erreur, connectez appel, et se concentrer sur la route et la requête.
Merci!
Pour un, vous pouvez utiliser ['pool.query()'] (https://github.com/brianc/node-pg-pool#your-new-favorite-helper-method) au lieu de 'connect ()/query()/done() '. – robertklep
merci! en utilisant api call et pool.query fait le travail! Je pense que je peux utiliser pool.on pour la gestion des erreurs courantes, non? –
Le problème avec l'utilisation de 'pool.on()' pour le traitement des erreurs globales est que vous ne pourrez probablement pas envoyer de réponse HTTP (comme 500) pour indiquer qu'une erreur est survenue (puisque le gestionnaire 'on' a gagné ' t avoir accès à 'res'). – robertklep