javascript - Nodejs/Expressjs 应用结构

标签 javascript node.js express

假设我有这段代码来分隔 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();
        });
    });
}

并在 app.js 中要求它:

require('./controllers/routes.js')(express,app,client);

1) 如何以最佳方式将数据库查询分离到新文件中?

即使我分离数据库逻辑,这个文件也会变得非常大。

2) 分隔路线的好方法是什么?也许单独的模块?然后在 app.js 中要求它们?

最佳答案

这里有一个类似的问题,您应该阅读:How to structure a express.js application?

1) 您所有的查询逻辑都应该放在模型中(例如位于/models 中的模块)

2) 将所有路由( Controller )分成模块(并将它们放入/routes for ex) 路线我的意思是例如: - “用户”路由的所有逻辑都进入/routes/users.js

尽量让你的应用像 MVC 一样。

上面你的应用的小例子:

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);
  }
}

关于javascript - Nodejs/Expressjs 应用结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8428212/

相关文章:

node.js - nodejs表达本地ip地址

Javascript:无法理解正则表达式的含义

javascript - svg 文本旋转中的 JSX 变量 {MyX} 不起作用

javascript - 45度谷歌地图

javascript - 如何使用 jquery 获取 jqgrid 对象

node.js - 如何在 Express 中将静态文件提供给不同的路由?

node.js - 如何在 Mongoose 中设置数据库名称和集合名称?

javascript - Alexa intent 不等待 api 响应

node.js - CoffeeScript 和 NodeJS : How do I export multiple classes?

node.js - 单元测试 Express 中间件的正确方法