Javascript 如何从express应用程序的服务器端发送GET请求查询的响应?
我正在使用对postgres db的查询将结果存储在Express应用服务器端GET请求中的变量中 当我在psql中运行查询时,查询返回我正在查找的issueID,但是我很难将响应存储在变量中,以便将响应发送到客户端 我的代码如下所示:Javascript 如何从express应用程序的服务器端发送GET请求查询的响应?,javascript,node.js,postgresql,express,Javascript,Node.js,Postgresql,Express,我正在使用对postgres db的查询将结果存储在Express应用服务器端GET请求中的变量中 当我在psql中运行查询时,查询返回我正在查找的issueID,但是我很难将响应存储在变量中,以便将响应发送到客户端 我的代码如下所示: const pg = require('pg'); const connection = 'postgres://aa2:aa2@localhost:5432/bugtrackingdb'; const client = new pg.Client(conne
const pg = require('pg');
const connection = 'postgres://aa2:aa2@localhost:5432/bugtrackingdb';
const client = new pg.Client(connection) ;
client.connect();
app.get('/tracking', function(req, res) {
var sql = "SELECT bugtracking.issues.issueID FROM bugtracking.issues WHERE bugtracking.issues.issueID = (SELECT MAX(bugtracking.issues.issueID) FROM bugtracking.issues);"
var issueID;
client.query(sql, function(err, result) {
if (err){
console.log("error in tracking");
}
issueID = JSON.stringify(result.rows[0]);
console.log("Tracking Result" + issueID);
//GET results
res.json(res.statusCode);
// res.json(issueID);
console.log("Selected Bug Tracking IssueID. Status Code: " + res.statusCode);
});
});
如何从查询中获取数据以将数据存储在issueID变量中,并将其发送到我的应用程序的客户端
我也在使用body解析器
编辑:
因为我无法打印console.log语句,所以几乎就好像查询没有执行一样。这是我的前端代码,有助于更好地理解:
$(window).load(function() {
$.ajax({
type: 'GET',
url: 'http://139.169.63.170:' + port + '/tracking',
dataType: 'json',
cache: true,
success: function (data) {
console.log("DEBUG DONE WITH CAPTURING tacking#: " + data);
if (data === Number(200)) {
issueID = issueID + 1;
$(".trackingID").val(issueID);
}
}
});
console.log("Window loads & Ajax runs???");
});
第二次编辑:
以下是在psql中运行我的查询的结果。我正在尝试从get请求中获取要返回的号码“33”:
bugtrackingdb=# SELECT bugtracking.issues.issueID FROM bugtracking.issues WHERE bugtracking.issues.issueID = (SELECT MAX(bugtracking.issues.issueID) FROM bugtracking.issues);
issueid
---------
33
(1 row)
经过一些更改后,我将从后端console.log语句打印以下内容:
Tracking Result: [object Object]
Selected Bug Tracking IssueID. Status Code: 304
编辑“越来越近”:
我对结果进行了字符串化。查询返回的对象中的行[0]。现在,我可以将结果打印到服务器端console.log,该日志将给出以下结果:
Tracking Result: {"issueid":"37"}
Selected Bug Tracking IssueID. Status Code: 304
status: 200
但是,当我取消注释res.jsonissueID行时,我得到一个错误
如何将JSON对象发送回客户端,以便根据需要显示它?您的响应应该存储在结果中。我不知道您的数据库是如何构建的,但您应该能够通过这种方式访问数据库返回的所有值。结果的内部是什么?results.rows.length==0,这是打字错误吗?Prob没有引起您的问题,但它在您的第二个if语句中引起了我的注意。我在原始get请求中消除了if条件,以便将重点放在结果上。如果您的console.log语句没有打印任何内容,则显然查询出了问题。您是否尝试过将issueID设置为字符串之类的随机值,只是为了测试它是否正确地发送回前端?如果您尝试这样做,应该能够查明故障区域。在psql中,查询会给出issueID
app.get('/tracking', function(req, res) {
var sql = "SELECT bugtracking.issues.issueID FROM bugtracking.issues WHERE bugtracking.issues.issueID = (SELECT MAX(bugtracking.issues.issueID) FROM bugtracking.issues);"
var issueID;
client.query(sql, function(err, result) {
if (err){
console.log("error in tracking");
}
issueID = JSON.stringify(result.rows[0]);
console.log("Tracking Result" + issueID);
// TRY THIS
res.send(issueID);
});