【问题标题】:Raw SQL with Express without ORMs原始 SQL 与 Express 没有 ORM
【发布时间】:2018-10-07 18:13:47
【问题描述】:

我想在我的应用程序中使用原始 SQL 查询,但我对如何构建我的应用程序有一些疑问。

一些背景:

  1. 我正在使用 Express 和 Postgres 编写 JSON API。
  2. 我目前没有使用 ORM。我以前用过 Sequelize,但我不相信查询是优化的,所以我很犹豫。

  3. 我在我的代码中使用 camelCase,但 Postgres 不区分大小写,因此为了便于阅读,我在我的数据库表中使用了 under_scores。我经常不得不做这样的查询: SELECT first_name AS "firstName" from users; 当查询变大时,几乎无法阅读,因为 js 字符串模板中没有 SQL 的语法高亮。

  4. 我觉得我的查询中有太多重复,但这是意料之中的。

我在想什么:

  1. 我找不到可以突出显示 js 文件和字符串中的 SQL 的 Visual Studio Code 扩展。如果有的话,我可能会过。
  2. 我可能会在 .sql 文件中编写所有查询,以便在我的应用程序启动时将它们全部加载到内存中,以防止过多的 IO 操作,因为这与我使用 raw 的原因不符首先是 SQL。

以前有人遇到过这个问题吗?将原始 SQL 与 Postgres 和 Express 结合使用时,您如何构建应用程序?

【问题讨论】:

    标签: node.js postgresql express architecture software-design


    【解决方案1】:
    1. 一定要把所有的sql脚本保存在对应的.sql文件中。
    2. 坚持有意义的命名约定。想出一个你觉得舒服的:在未来,它将允许围绕你的代码库构建有用的工具,自动做很多无聊的事情,让你更快乐。
    3. 如果您很快变得复杂,请至少生成一些重复/常用的 sql。考虑在您的文件中添加一些简单的占位符,例如{{ firstName }},它被翻译成first_name AS "firstName"。这样的翻译应该只发生一次 - 当您输入源 .sql 时。这更复杂,并且高度取决于您的任务类型。这种方法有时无用,有时却有用。

    【讨论】:

    • 我担心 IO,如果我的应用程序需要进行查询,它需要读取文件,这会严重影响延迟。添加我的 sql 查询的模板,我们遇到了问题。对此有何建议?
    • @KorayGocmen,它应该每次都读取源文件。缓存原始字符串(在将占位符转换为具体值之前)。保持适当的ISqlSourceFile 靠近与数据库相关的代码。再说一次,您必须只执行一次 IO。
    猜你喜欢
    • 2020-10-21
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 2016-07-01
    • 1970-01-01
    • 2010-11-12
    • 2019-08-05
    相关资源
    最近更新 更多