Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从express应用程序的服务器端发送GET请求查询的响应?_Javascript_Node.js_Postgresql_Express - Fatal编程技术网

Javascript 如何从express应用程序的服务器端发送GET请求查询的响应?

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

我正在使用对postgres db的查询将结果存储在Express应用服务器端GET请求中的变量中

当我在psql中运行查询时,查询返回我正在查找的issueID,但是我很难将响应存储在变量中,以便将响应发送到客户端

我的代码如下所示:

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);   
});