
来自pg-promise的作者…
pg-promise不支持查询取消,因为它可以解决数据库设计错误或查询执行不正确的问题。
PostgreSQL支持在执行耗时的查询时应使用的事件,因此无需等待,可以将事件侦听器设置为在特定数据/视图可用时触发。请参阅“
侦听/提示”示例。
您可以使用自己的自定义查询方法扩展pg-promise,该方法将因拒绝而超时(请参见下面的示例),但这又是解决设计问题的另一种方法。
使用Bluebird的示例:
const Promise = require('bluebird');Promise.config({ cancellation: true});const initOptions = { promiseLib: Promise, extend(obj) { obj.queryTimeout = (query, values, delay) => { return obj.any(query, values).timeout(delay); } }};const pgp = require('pg-promise')(initOptions);const db = pgp();然后,您可以
db.queryTimeout(query, values, delay)在每个级别上使用。
另外,如果您使用的是Bluebird,则可以链接
.timeout(delay)到任何现有方法:
db.any(query, values) .timeout(500) .then(data => {}) .catch(error => {})也可以看看:
- 扩展事件
- Bluebird.timeout
更新
从8.5.3版开始,pg-
promise开始通过
query_timeout连接对象内的属性支持查询超时。
您可以覆盖默认值:
pgp.pg.defaults.query_timeout = 3000; // timeout every query after 3 seconds
或在连接对象中指定它:
const db = pgp({ query_timeout: 3000});欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)