当前位置: 首页 > 面试题库 >

Node.js / Express.js应用程序结构

池麒
2023-03-14
问题内容

说我有这段代码来分隔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


问题答案:

这里有一个类似的问题,您应该阅读:如何构建express.js应用程序?

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

2)将您的所有路由(控制器)分离到模块中(并将它们放在/
routes中,例如ex)路由是我的意思,例如:-“用户路由的所有逻辑都进入/routes/users.js

尝试使您的应用尽可能保持MVC风格。

上面您的应用的小示例:

app.js

// configuration for express etc
require('./routes/index')(app)

路线/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);
  }
}


 类似资料:
  • 问题内容: 与其他框架相比,Node.js + Express.js应用程序中的错误报告/处理似乎有所不同。我理解它的工作原理是否正确? A) 通过接收错误作为回调函数的参数来 检测 错误。例如: B) 通过调用next(err) 报告 MIDDLEWARE中的​​错误。例: C) 通过抛出错误来 报告 路由中的错误。例: d) 手柄 通过配置通过app.error自己的错误处理的错误()或使用通

  • 我的服务器上运行了一个node.js/express.js应用程序,它只在3000端口上工作,我正在试图找出原因。以下是我的发现: 在不指定端口()的情况下,应用程序会运行,但网页不会加载。 在端口3001()或任何其他未使用的端口上,应用程序运行但网页不加载。 在端口2999上,应用程序抛出错误,因为其他东西正在使用该端口。 在端口3000上,应用程序运行,网页加载良好。 我知道Express应

  • 问题内容: 是否有在 Express.js 应用程序中分解和模块化文件的通用约定?还是将所有内容保存在一个文件中很普遍? 问题答案: 我的分解如下: 我使用Exports返回相关内容。例如,在模型中,我这样做: 然后,如果我需要创建一个电话号码,则非常简单: 如果我需要使用架构,那么 (假设我们正在routes文件夹中工作,需要先上一层然后再下一层模型) 编辑4 该 快递维基 具有建立在它之上的框

  • 问题内容: 我有几个应用程序试图合并为一个“套件”:2个应用程序是独立的,一个只是一个身份验证层(使用FB Connect的Everyauth)。我想这样设置: /-(首页)应用列表 / auth-登录任何应用程序 / app1-需要通过/ auth登录才能访问 / app2-(相同) 我曾考虑过让app1和app2保持独立,顶层是代理,但是我认为要在它们之间共享身份验证系统很困难。虚拟主机(通过

  • 我想运行节点。js与asp。net mvc用于执行套接字。io操作。 我已经成功地包含了节点。js在asp。net mvc,如本文所述 我的问题是如何在ASP.NET MVC中运行express.js, 我已经在Global.asax.cs文件中执行了url重写,如< br > void Application_BeginRequest(对象发送方,EventArgs e) { //获取当前路径

  • 应用程序开发人员使用composer-clientnpm模块以编程方式连接到已部署的业务网络,创建、读取、更新、删除资产和参与者,以及提交交易。如果应用程序需要能够部署或管理业务网络,则可以使用composer-adminnpm模块。 示例landregistry.js文件包含一个代表土地注册的类,并包含列出土地权证、添加默认权证和提交交易的方法。这已经使用JavaScript类实现了; 然而,你