如果用户在某些行上使用node.js和我的sql具有某个值,那么我正在编写一个代码来在网页上打印用户电子邮件行
所以我创建了这段代码 当我在console.log上运行它时,我得到了正确的值 但是当我试着用它时 res.send(); 我收到此错误
Error: Can't set headers after they are sent.
并且只获得一行而不是所有用户行
我试着在res.send之后写回车 那我只能给我一行如何在网页上获得所有行?
app.get('/usersrooms', function (req, res, next) {
var userslist = "SELECT * FROM users ORDER BY id";
var query = connection.query(userslist, function(err,rows, result) {
if (rows.length > 0) {
for (var i in rows) {
if (rows[i].onmatch == 0){
//console.log("the mails",rows[i].email);
res.send('hello',rows[i].email)
}
}
}
})
});
答案 0 :(得分:1)
你得到的error
因为,即使在循环完成之前发送了响应,
解决方案是:
获取数组 rows_array = []
将电子邮件从循环中推送到该数组中,
<强> rows_array.push(rows[i].email)
强>
循环完成后,将该数组作为响应发送,
<强> res.send('hello',rows_array)
强>
app.get('/usersrooms', function (req, res, next) {
var userslist = "SELECT * FROM users ORDER BY id";
var query = connection.query(userslist, function(err,rows, result) {
if (rows.length > 0) {
var rows_array = []
for (var i in rows) {
if (rows[i].onmatch == 0){
//console.log("the mails",rows[i].email);
rows_array.push(rows[i].email)
}
}
res.send('hello',rows_array)
}
})
});