Node.js-单独文件中的SQL查询?

MrS*_*Scf 6 javascript node.js

我想知道您对以下任务有何看法。我想从数据库中的JSON对象写入数据。我想将SQL逻辑与业务逻辑分开。

当文件js包含很多查询时,我读过这种策略的性能不好。

您认为哪种方法是最佳做法?你能举个例子吗?

Pau*_*aul 5

您的性能问题绝对是“赛马”场景(即测试并查看)。但一般来说,如果您要这样做,我只需导出一个包含所有命名查询的对象,如下所示:

module.exports = {
  getAllUsers: "SELECT username, email, displayName FROM users;",
  /* other queries */
}
Run Code Online (Sandbox Code Playgroud)

然后,您的调用代码可以只需要该文件并获取它所需要的内容:

const queries = require('./db/queries');
queries.getAllUsers // <-- this is now that string
Run Code Online (Sandbox Code Playgroud)

性能应该尽可能好,因为您的 require 缓存将确保文件只读取一次,并且 JS 中基于键的查找非常快,即使有一千或两个条目。


Dav*_*nte 3

我认为将数据库代码与业务代码以及 API 代码(如果存在)分开始终是一个很好的做法。

创建这些不同的层,您可以获得不同的优势:

  • 单独测试每一层(使用单元测试),模拟其他层。这样,当您更改代码时,您可以非常快速地检测到错误。
  • 您可以非常轻松地更改数据库连接器,甚至数据库,而不会影响您的业务代码(例如 MongoDB 的 MySQL)
  • 您可以更改 API 或添加新 API,而无需更改业务代码(例如,GraphQL 的 REST API)

如果您想查看具有此层的项目,我们最近发布了一个简单的项目,可让您创建协作新闻通讯。您可以检查后端部分,其中有 db 文件夹、domain 文件夹和 api 文件夹。这些是我正在谈论的 3 层:

合作通讯

希望对您有帮助