Say i have this code to separate routes in expressjs:
module.exports = function(express,app,client) { app.get('/', function(req,res,next) { var query = 'SELECT * FROM users LIMIT 10'; var user = client.query(query, function (err, results, fields) { res.render('index', { title: 'test', users: results }); client.end(); }); }); } And require it in app.js:
require('./controllers/routes.js')(express,app,client); 1) How do i separate db queries into new files in the best way?
This file would get pretty big even if i separate db logic.
2) What is a good way to separate routes? Maybe separate modules? and then require them all in app.js?
Node. js uses the “Single Threaded Event Loop” architecture to handle multiple concurrent clients. Node. js Processing Model is based on the JavaScript event-based model along with the JavaScript callback mechanism.
Express has not been updated for years, and its next version has been in alpha for 6 years. People may think it is not updated because the API is stable and does not need change. The reality is: Express does not know how to handle async/await .
Middleware frameworks, like Express. js, are suitable for small and medium projects. If you are going to develop a large project that will be supported by a large team of developers, Express. js is not the best choice.
There is a similar question here which you should read: How to structure a express.js application?
1) All your query logic should be put in models (modules that reside in /models for example)
2) Separate all your routes (controllers) into modules (and put them in /routes for ex) By routes I mean for example: - all the logic for "Users" routes go into /routes/users.js
Try to keep you app as MVC-ish as possible.
Small example for your app above:
app.js
// configuration for express etc require('./routes/index')(app) routes/index.js
var model = require("../models/users.js"); module.exports = function (app) { app.get('/', function (req, res, next) { model.get_recent(function (err, results) { // do stuff with your results res.render('index'); }); }); } models/users.js
module.exports = { get_recent: function(callback) { var query = "SELECT * FROM users LIMIT 10"; database.query(query, callback); } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With