gga*_*bor 14 javascript pg-promise
我刚开始学习nodejs-postgres并找到了pg-promise包裹.我阅读了文档和示例,但我不明白我应该在哪里放置初始化代码?我使用Express,我有很多路线.
我必须将整个初始化(包括pg-monitorinit)放到我想要查询db的每个文件中,或者我只需要initalize/configure在server.js中包含它们?
如果我只在server.js中初始化它们应该包含哪些我需要db查询的文件呢?
换一种说法.我不清楚pg-promise和pg-monitor configuration/initalization是全局还是本地行动?
我还不清楚是否需要为每个查询创建一个db变量并结束pgp?
var db = pgp(connection);
db.query(...).then(...).catch(...).finally(**pgp.end**);
Run Code Online (Sandbox Code Playgroud)
vit*_*y-t 33
您只需要初始化数据库连接一次.如果要在模块之间共享,则将其放入自己的模块文件中,如下所示:
const initOptions = {
// initialization options;
};
const pgp = require('pg-promise')(initOptions);
const cn = 'postgres://username:password@host:port/database';
const db = pgp(cn);
module.exports = {
pgp, db
};
Run Code Online (Sandbox Code Playgroud)
请参阅支持的初始化选项.
更新
如果您尝试使用相同的连接详细信息创建多个数据库对象,则库将向控制台输出警告:
WARNING: Creating a duplicate database object for the same connection.
at Object.<anonymous> (D:\NodeJS\tests\test2.js:14:6)
这指出您的数据库使用模式很糟糕,即您应该共享数据库对象,如上所示,而不是重新创建它.从版本6.x开始,它变得至关重要,每个数据库对象都维护着自己的连接池,因此重复这些将导致连接使用不良.
此外,没有必要导出pgp- 初始化的库实例.相反,你可以这样做:
module.exports = db;
Run Code Online (Sandbox Code Playgroud)
如果在某些模块中你需要使用库的根,你可以通过属性$ config访问它:
const db = require('../db'); // your db module
const pgp = db.$config.pgp; // the library's root after initialization
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10910 次 |
| 最近记录: |