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

Javascript 是否允许多次重复使用pg QueryFile,javascript,postgresql,ecmascript-6,pg,pg-promise,Javascript,Postgresql,Ecmascript 6,Pg,Pg Promise,我可以重复使用这类软件吗 例如 目前,每当我想执行查询文件时,我都会创建新的查询文件。 e、 g 如果我多次重复使用同一个查询,有什么缺点吗 是否允许多次重复使用pg QueryFile 不,不允许,坚持 类型表示指向文件的虚拟链接,它的使用提供了许多优点- 与此问题相关的两个关键特征是: 解析和缩小SQL(选项minify/compress),用于早期错误检测和紧凑查询 外部SQL中的更改可以自动重新加载(选项debug),而无需重新启动应用程序 如果提供了选项minify/compre

我可以重复使用这类软件吗

例如

目前,每当我想执行查询文件时,我都会创建新的查询文件。 e、 g

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

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

不,不允许,坚持


类型表示指向文件的虚拟链接,它的使用提供了许多优点-

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

  • 解析和缩小SQL(选项
    minify/compress
    ),用于早期错误检测和紧凑查询
  • 外部SQL中的更改可以自动重新加载(选项
    debug
    ),而无需重新启动应用程序
如果提供了选项
minify
/
compress
,第一个选项将加载文件,解析并缩小它。这需要时间和IO,不应重复多次,因为这将毫无意义

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


因此,缺点是:

  • 创建不必要的IO(额外的文件读取+SQL解析和缩小)。在您的示例中,情况甚至更糟—您每次执行查询时都在这样做
  • 丢失设计类型的关键功能(无法自动重新加载)

当您为同一个文件重新创建类型时,您正在使用该类型来实现其最有用的目的。这就是为什么它会在为同一个文件创建重复的QueryFile对象时向您报告警告


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

您是否阅读了的
重要部分?该类型是指向文件的虚拟链接,只能创建一次。正如我在下面的回答中所解释的,这种使用模式非常糟糕;)
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, []);
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 }), []);