我对nodejs和expressjs很陌生。有人可以确保我做对了。每次我通过网络执行回复,例如/names/status/10000036/
没有显示任何数据。
代码:
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-node modules。
由于
答案 0 :(得分:0)
您从行数组中未填充的位置获取id,wishname和result。您只想设置对行[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));
});
});
答案 1 :(得分:0)
我认为maven-resources-plugin
选项值是错误的,它应该是一个数组:
data.ToonID
使用connection.query('SELECT * FROM NameApproval WHERE ToonID = ?', [data.ToonID], function(err, rows, fields) {
data.ToonID
如上所述:https://github.com/felixge/node-mysql#escaping-query-values
答案 2 :(得分:0)
所以我修好了。 数组存在问题。我不知道顶部的 ToonID ToonID { }
来自哪里。但是感谢所有帮助过的人。 :)
<强>输出强>
{
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));
});
});