2017-08-05 56 views
0

我正在使用對postgres數據庫的查詢將結果存儲在快速應用程序的服務器端的GET請求中的變量中。如何從快速應用程序的服務器端的GET請求查詢發送響應?

我的查詢返回的是我在psql中運行時查找的問題ID,但我很難獲得響應以存儲在變量中,因此我可以將響應發送到客戶端。

我的代碼如下所示:

const pg = require('pg'); 
const connection = 'postgres://aa2:[email protected]: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-parser。

編輯: 這幾乎就像查詢甚至沒有執行,因爲我不能讓我的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???"); 
}); 

2日編輯:

這裏是在psql裏運行我的查詢結果。我試圖讓數「33」從我的GET請求返回:

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 

EDIT(越來越近):

我字符串化的[0]從對象從我的查詢返回的result.rows。我現在能得到的結果打印到服務器端的console.log這給了我下面的結果:

Tracking Result: {"issueid":"37"} 
Selected Bug Tracking IssueID. Status Code: 304 
status: 200 

然而,當我取消對該行res.json(issueID)我得到一個錯誤。

如何將我的JSON對象發送回客戶端以便我可以根據需要顯示它?

+1

您的回答應該存儲在結果中。 我不知道你的數據庫是如何構建的,但你應該能夠以這種方式訪問​​數據庫返回的所有值。 結果是什麼? – sheplu

+0

我的console.log結果不打印到終端。那是什麼令我困惑 – lopezdp

+1

results.rows.length === 0,是錯誤的?不要引起你的問題,但它引起了你的第二條陳述。 –

回答

1
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); 
}); 
相關問題