Почему мой запрос работает на pgAdming, но когда я выполняю его с сервера, я получаю ошибку запроса (ошибка: соединение разорвано)?
Я работаю над своим проектом Capstone, и он требует хранить некоторые данные телеметрии в базе данных. Я использую PostgreSQL 9.5 для базы данных и узел для сервера.
Моя проблема в том, что когда я пытаюсь отправить запрос с сервера, я получаю сообщение об ошибке [Ошибка: Соединение разорвано]. Если я использую JSON.stringify(err)
Я вижу только пустые скобки в результате {}
, Что интересно, если я использую клиент pgAdmin и выполняю тот же запрос, запись добавляется успешно без каких-либо ошибок.
Вот код, который я использую на сервере для отправки запроса:
client.connect(function(err) {
if(err){
return console.error('could not connect to postgres', err);
}
//Checks if there is survey data to process
if(surveyFlag){
//Query to insert survey record
//Returns survey record's auto-generated id to use it when creating or updating the //telemetry record in the database
var query = 'INSERT INTO survey_response (perceived_risk, actual_risk) '+
'VALUES (' + telemetryRecord.survey.perceivedRisk +', ' +
telemetryRecord.survey.actualRisk +') ' +
'RETURNING survey_id';
client.query(query, function(err, result) {
console.log("Query: " + query);
if(err) {
console.log(err);
return console.error('error running survey query', err);
}
surveyID = result.rows[0].survey_id;
//Testing
console.log ("Survey response added with ID: " + surveyID);
});
//Close the connection
client.end();
});
1 ответ
Код client.end()
ставится на одном уровне кода client.query()
, поскольку client.query()
асинхронный, client.end()
вызывается сразу после запуска запроса. К тому времени, когда запрос возвращается, клиент уже закончил, что вызывает проблему.
Попробуйте разместить client.end()
код в функции обратного вызова client.query()
,
client.query(query, function(err, result) {
console.log("Query: " + query);
if(err) {
console.log(err);
return console.error('error running survey query', err);
}
surveyID = result.rows[0].survey_id;
//Testing
console.log ("Survey response added with ID: " + surveyID);
//Close the connection
client.end();
});