pg-promise 开源项目教程
pg-promisePostgreSQL interface for Node.js项目地址:https://gitcode.com/gh_mirrors/pg/pg-promise
项目介绍
pg-promise 是一个用于 Node.js 的 PostgreSQL 接口库。它建立在 node-postgres 之上,提供了自动连接管理、自动事务处理、强大的查询格式化引擎和查询生成功能。此外,它还支持全局事件报告,便于集中处理,并且广泛支持外部 SQL 文件。自 2015 年创建以来,pg-promise 不仅增加了对基础驱动程序的承诺支持,还扩展了其功能,使其成为处理 PostgreSQL 数据库的强大工具。
项目快速启动
安装
首先,通过 npm 安装 pg-promise:
npm install pg-promise
初始化
加载并初始化库,可以选择使用初始化选项:
const pgp = require('pg-promise')({
// 初始化选项
});
或者不使用初始化选项:
const pgp = require('pg-promise')();
创建数据库对象
从连接创建数据库对象:
const db = pgp({
host: 'localhost',
port: 5432,
database: 'myDatabase',
user: 'myUser',
password: 'myPassword'
});
执行查询
使用数据库对象执行查询:
db.one('SELECT $1 AS value', 123)
.then(data => {
console.log('DATA:', data.value);
})
.catch(error => {
console.log('ERROR:', error);
});
应用案例和最佳实践
使用外部 SQL 文件
pg-promise 支持从外部 SQL 文件加载查询,这有助于保持代码整洁并便于管理大型查询:
const QueryFile = pgp.QueryFile;
const path = require('path');
function sql(file) {
const fullPath = path.join(__dirname, file);
return new QueryFile(fullPath, {minify: true});
}
const sqlFindUser = sql('./sql/findUser.sql');
db.one(sqlFindUser, {id: 123})
.then(user => {
console.log(user);
})
.catch(error => {
if (error instanceof pgp.errors.QueryFileError) {
// 处理 QueryFile 错误
}
});
事务处理
pg-promise 提供了强大的事务处理功能,支持条件事务和嵌套事务:
db.tx(t => {
return t.batch([
t.none('UPDATE users SET active = $1 WHERE id = $2', [true, 1]),
t.one('INSERT INTO logs(event) VALUES($1) RETURNING id', 'user_updated')
]);
})
.then(data => {
console.log('TRANSACTION COMPLETED');
})
.catch(error => {
console.log('ERROR:', error);
});
典型生态项目
pg-promise 可以与其他 Node.js 项目和工具集成,例如:
- Express.js: 用于构建 Web 应用程序。
- Sequelize: 另一个流行的 Node.js ORM,可以与 pg-promise 结合使用。
- PM2: 用于进程管理和监控。
这些工具和项目可以与 pg-promise 一起使用,以构建强大且可扩展的 Node.js 应用程序。
pg-promisePostgreSQL interface for Node.js项目地址:https://gitcode.com/gh_mirrors/pg/pg-promise