Когда я пытаюсь выполнить массовый запрос в nodejs с promise.all, я получил ошибку ECONNREFUSED после того, как некоторое количество запросов привело к успеху.
Я создаю сервер узлов для своего веб-приложения. Я сделал несколько запросов в результате запросов AJAX от клиента. Они все работали нормально до сих пор.
Я пытался загрузить данные из Excel в некоторое количество таблиц (я использую модуль pg). Я написал код, который вставляет записи после чтения, если нет другой записи. Я использовал обещание, чтобы сделать запросы. Но он сделал несколько запросов и затем начал получать ошибку ECONNREFUSED.
- Я изменил max_connections на 10000 и shared_buffers на 25000MB. И перезапустите сервер postgres
- Я изменил max_connections на 1000 и shared_buffers на 2500MB. И перезапустить сервер postgres
- Я изменил max_connections на 300 и shared_buffers на 2500MB. И перезапустите сервер postgres
- Я изменил свой код с пула POSTGRESQL на клиент POSTGRESQL
Я пропустил некоторый запрос в массиве обещаний
но ничего не изменилось. Было вставлено почти 180 записей. Тогда получил ошибку.
function loadData(auditArrayObject){
return new Promise(function (resolve, reject) {
let promises=[
loadAuditItem(auditArrayObject.audit,
auditArrayObject.auditVersion),
loadProcesses(auditArrayObject.processArray),
loadControlAims(auditArrayObject.controlAimArray),
loadCriterias(auditArrayObject.criteriaArray),
loadParameters(auditArrayObject.parameterArray),
]
Promise.all(promises)
.then(objectsWithId=>{
......
}
}
function loadProcesses(processArray){
return new Promise(function (resolve, reject) {
let promises=[];
for(let i=0;i<processArray.length;i++){
let process= new Process(null,processArray[i],false)
let promise= postGreAPI.readProcessByName(process.name)
.then(resultProcess=>{
if (!resultProcess) {
postGreAPI.createProcess(process)
.then(createdProcess=>{
resolve(createdProcess)
})
.catch(err=>{
reject({msg:"createProcess
hata aldı",err:err})
})
} else {
return (resultProcess)
}
})
.catch(err=>{
reject({msg:"readProcessByName
hata aldı",err:err})
})
promises.push(promise)
}
Promise.all(promises)
.then(processArray=>{
resolve({key:"Process",value:processArray})
})
.catch(err=>{
reject({msg:"Processlerden birisi insert edilemedi",err:err})
})
});
}
postGreAPI.readProcessByName:
var readProcessByName = function (name){
return new Promise(function (resolve, reject) {
let convertedName=convertApostrophe(name)
let query = "SELECT * FROM process WHERE name='"
+ convertedName + "'"
queryDb(query)
.then(result=>{
if (result.rows.length>0){
let process = new Process(result.rows[0].id,
result.rows[0].name,
result.rows[0].isactive);
resolve(process)
}else{
resolve(null)
}
})
.catch(err=>{
reject(err)
})
})
}
queryDb:
var queryDb2 = function (query,params) {
return new Promise(function (resolve, reject) {
let pool = new PostGre.Pool(clientConfig);
pool.connect(function(err, client, done) {
if(err) {
return reject (err);
}
client.query(query,params, function(err, result) {
done();
if(err) {
return reject (err);
}
resolve(result)
});
});
})
}
И ошибка:
Error: connect ECONNREFUSED 127.0.0.1:5432
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1113:14)
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 5432 }
На самом деле я выполнил эту загрузку до того, как изменилась конфигурация моего ноутбука. До этого была Windows 7, но теперь Windows 10.