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