gpt4 book ai didi

javascript - 是否允许多次重复使用 pg QueryFile

转载 作者:行者123 更新时间:2023-11-29 13:17:18 25 4
gpt4 key购买 nike

我可以重复使用 QueryFile 类型吗?的 pg-promise

例如。

const pgp = require(`pg-promise`)(options);
const QueryFile = pgp.QueryFile;

const db = pgp(config.DB);
const query = new QueryFile('queryPath/some.sql', { minify: true });

// running sql query
db.any(query, []);
db.any(query, []);
db.any(query, []);
db.any(query, []);
db.any(query, []);

目前,每次我想执行它时,我都在创建新的 QueryFile。例如

db.any(new QueryFile('queryPath/some.sql', { minify: true }), []);
db.any(new QueryFile('queryPath/some.sql', { minify: true }), []);
db.any(new QueryFile('queryPath/some.sql', { minify: true }), []);
db.any(new QueryFile('queryPath/some.sql', { minify: true }), []);

如果我多次重复使用同一个查询会有什么缺点吗?

最佳答案

Is it allowed to reuse pg QueryFile multiple times?

不,不允许,坚持!


输入 QueryFile表示文件的虚拟链接,使用它有很多好处 - as documented .

与此问题相关的两个关键特征是:

  • Parsing and minifying SQL (options minify/compress), for early error detection and compact queries.
  • Changes in external SQL can be automatically re-loaded (option debug), without restarting the app.

如果提供选项 minify/compress,第一个加载文件,解析并缩小它。这需要时间和 IO,并且不应多次执行,因为无论如何都没有意义。

第二点允许它用作虚拟链接,可以在开发模式(选项 debug)下自动检测任何文件更改,并自动重新加载和准备文件。在开发环境中,此功能是无价的,可防止您在外部 SQL 文件更改时重新加载应用程序。


所以缺点是:

  • 创建不必要的 IO(额外的文件读取 + SQL 解析和缩小)。在您的示例中,情况更糟 - 您每次执行查询时都在这样做。
  • 丢失了哪种类型的关键特征QueryFile被设计(自动重新加载变得不可能)

当你重新创建QueryFile为同一个文件键入,您正在使用该类型来达到其最有用的目的。这就是它会向您报告警告的原因 Creating a duplicate QueryFile object for the same file

您应该为 SQL 文件设置一个单独的结构,如 pg-promise-demo 中所示。 , 请参阅 here .

关于javascript - 是否允许多次重复使用 pg QueryFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47175056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com