我希望每分钟使用池连接PostgreSQL数据库。 我的职责是:
module.exports.deleteExpiredAd = function(callback) {
var response = {};
var queryText = "begin transaction;
update ad set deleted=true where date_to < current_date;
update ad_ad_group set deleted=true from ad where
ad.date_to < current_date;
commit;"
pool.connect(function(err, client, done) {
if(err) {
response.code = 1;
callback(err, response, 400);
return console.error('error fetching client from pool', err);
}
client.query(queryText, function(err, result) {
client.release();
if(err) {
console.log(err);
response.code = 1;
response.message = 'expired ads have not been deleted';
callback(err, response, 400);
return console.error('error running query', err.code);
}
response.code = 0;
response.message = 'expired ads have been deleted'
//client.destroy()
callback(err, response, 201);
});
});
};
这个函数我使用setTimeout从另一个文件调用(我试过setInterval,但是没有区别)
var checker = function(){
setTimeout(function(){
console.log("calling api")
modelAd.deleteExpiredAd(function(){
})
},60000);
}
checker();
我已经尝试在功能结束前关闭池,但后来我不确定是否可以重新打开它。
答案 0 :(得分:0)
试试这个:
var checker = function(){
setInterval(function(){
console.log("calling api")
modelAd.deleteExpiredAd(function(){
})
},60000);
}
checker();
1000是1秒,因此超出了客户端限制,因为它每隔一秒被调用一次,而不是每分钟调用一次。 60000是1分钟(毫秒)
每次调用函数时都要关闭池:
module.exports.deleteExpiredAd = function(callback) {
var response = {};
var queryText = "begin transaction;
update ad set deleted=true where date_to < current_date;
update ad_ad_group set deleted=true from ad where
ad.date_to < current_date;
commit;"
pool.connect(function(err, client, done) {
if(err) {
response.code = 1;
callback(err, response, 400);
return console.error('error fetching client from pool', err);
}
client.query(queryText, function(err, result) {
client.end(callback)
if(err) {
console.log(err);
response.code = 1;
response.message = 'expired ads have not been deleted';
callback(err, response, 400);
return console.error('error running query', err.code);
}
response.code = 0;
response.message = 'expired ads have been deleted'
//client.destroy()
callback(err, response, 201);
});
});
};