我正在处理我的Capstone项目,它需要在数据库上存储一些遥测数据。我使用PostgreSQL 9.5作为服务器的数据库和节点。
我的问题是,当我尝试从服务器发送查询时,我收到查询错误[错误:连接已终止]。如果我使用{}
,我只会看到空括号作为结果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();
});
。有趣的是,如果我使用pgAdmin客户端并执行相同的查询,则会成功添加记录而不会出现任何错误。
以下是我在服务器中用来发送查询的代码:
{{1}}
答案 0 :(得分: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();
});