2016-01-04 83 views
0

我很新的nodejs和expressjs。有人可以確保我這樣做是正確的。每當我通過網絡執行響應時,例如/names/status/10000036/沒有數據顯示。nodejs沒有數據返回後功能

代碼:

app.get('/names/status/:id', function(req, res) { 
    var data = { 
    ToonID: req.params.id 
    } 
    connection.query('SELECT * FROM NameApproval WHERE ToonID = ?', data.ToonID, function(err, rows, fields) { 
     if (err) throw (err); 

     var id = rows[1]; 
     var wishname = rows[2]; 
     var result = rows[3]; 

     var response = { 
     ToonID: id, 
     WishName: wishname, 
     Result: result 
     }; 
     res.send(JSON.stringify(response)); 
    }); 
}); 

它成功地連接到數據庫,但它返回一個簡單的JSON { }

我使用ExpressJS,MySQL的節點模塊。

感謝

+0

你可以看一下'data.ToonID'如果它得到正確的ID? –

+0

是的,它是抓住ID爲'1000036'這是正確的ID – brownzilla

+0

看我的回答 –

回答

0

編輯:之前我還沒有讀完的問題

你把ID,wishname並導致了沒有填充行陣列中的位置之前的答案愚蠢公佈。你只想設置對行[0]的響應。

雖然我仍然在做數據庫引擎的假設。你應該真正指定你正在使用哪個數據庫庫,以及它連接到哪個數據庫。

您還需要將第二個參數作爲數組傳遞給connection.query。這裏是你的代碼的完整修正:

app.get('/names/status/:id', function(req, res) { 
    var data = { 
    ToonID: req.params.id 
    } 
    connection.query('SELECT id, wishname, result FROM NameApproval WHERE ToonID = ?', [data.ToonID], function(err, rows, fields) { 
     if (err) throw (err); 

     var id = rows[0][0]; 
     var wishname = rows[0][1]; 
     var result = rows[0][2]; 

     var response = { 
     ToonID: id, 
     WishName: wishname, 
     Result: result 
     }; 
     res.send(JSON.stringify(response)); 
    }); 
}); 
+0

你介意以某種方式解釋說,一個新的nodejs的人可以理解,導致你剛剛說的是如此令人困惑的抱歉。 :) – brownzilla

+0

我剛剛編輯了我在myquestion中使用的數據庫引擎。 :)並沒有問題。 – brownzilla

+0

查看更新後的答案,現在應該用代碼示例回答您的所有問題 –

0

我覺得data.ToonID期權價值是錯誤的,它應該是一個數組:

connection.query('SELECT * FROM NameApproval WHERE ToonID = ?', [data.ToonID], function(err, rows, fields) { 

變化data.ToonID[data.ToonID]

如這裏指出: https://github.com/felixge/node-mysql#escaping-query-values

+0

我這樣做。仍然返回空的JSON字符串:'{}' – brownzilla

+0

好吧,它現在返回一個錯誤。http://pastebin.com/ ka9N7fCD – brownzilla

+0

你確定這些路線是正確的?看起來你正在迴應兩次。 –

0

所以我修好了。 陣列存在問題。我不知道頂部ToonIDToonID { }是從哪裏來的。但是,感謝所有幫助過我的人。 :)

輸出

{ 
    ToonID: { 
     ToonID: "10000036", 
     WishName: "brownzilla", 
     Result: "PENDING" 
    } 
} 

代碼

app.get('/names/status/:id', function(req, res) { 
    var data = { 
    ToonID: req.params.id 
    } 
    connection.query('SELECT * FROM NameApproval WHERE ToonID = ?', [data.ToonID], function(err, rows, fields) { 
     if (err) throw (err); 

     var id = rows[0] 
     var wishname = rows[1] 
     var result = rows[2] 

     var response = { 
     ToonID: id, 
     WishName: wishname, 
     Result: result 
     }; 
     res.send(JSON.stringify(response)); 
    }); 
});