Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 在pg-promise中查询超时大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想为pg-promise查询添加超时,这样如果数据库尚未响应,它们将在一段时间后失败.
是否有任何推荐的方法,或者我应该制作自定义包装器来处理计时器并拒绝承诺,如果为时已晚?

解决方法

来自 pg-promise的作者……

pg-promise不支持查询取消,因为它是解决错误数据库设计或错误查询执行的黑客攻击.

Postgresql支持在执行耗时的查询时应该使用的事件,因此可以设置在特定数据/视图可用时触发事件监听器,而不是等待.见LISTEN/NOTIFY例子.

您可以使用自己的自定义查询方法扩展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(/* connection details */);

然后,您可以在每个级别上使用db.queryTimeout(查询,值,延迟).

或者,如果您使用的是Bluebird,则可以将.timeout(延迟)链接到任何现有方法

db.any(query,values)
    .timeout(500)
    .then(data => {})
    .catch(error => {})

也可以看看:

> extend活动
> Bluebird.timeout

大佬总结

以上是大佬教程为你收集整理的node.js – 在pg-promise中查询超时全部内容,希望文章能够帮你解决node.js – 在pg-promise中查询超时所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:promise