我正在尝试检测nodejs何时从mysql查询中没有收到任何数据。如果通过GET请求的数据是正确的,它会返回所需的结果。
工作要求:
http://server.com:8000?a=userinfo&user=datathatmatchesvalueindb
非工作申请
http://server.com:8000?a=userinfo&user=datathatdoesn'tmatchanythinginthedb
非工作,我的意思是如果请求包含不在mysql表中的数据,它会显示一个空白页面,而不是“无数据”所需的结果。
在PHP中,如果要检测mysql行中是否没有数据,可以执行以下操作:
if($res->num_rows === 0)
{
echo 'no data';
} else {
//Do you functions here
}
是否存在nodejs代码的等价物?
这是我写的代码:
var express = require('express');
var app = express();
var database = require('mysql-simple');
app.get('/', function(req, res){
database.init('user', 'pass', 'db', 'IP');
var data = '';
if (req.query.a == 'userinfo') {
var q = 'SELECT * FROM `addrbook` WHERE `key` =\''+req.query.user+'\'';
} else if (req.query.a == 'facebook') {
var q = 'SELECT * FROM `addrbook` WHERE `facebook` =\''+req.query.fb+'\' OR `facebookp` =\''+req.query.fb+'\'';
} else if (req.query.a == 'youtubeurl') {
var q = 'SELECT * FROM `addrbook` WHERE `youtubeurl1` =\''+req.query.url+'\' OR `youtubeurl2` =\''+req.query.url+'\' OR `youtubeurl3` =\''+req.query.url+'\'';
} else {
var q = 'SELECT * FROM `addrbook` WHERE `key` =\''+req.query.user+'\'';
}
database.query(q, function(err, rows, fields)
{
if (err) {
console.log('error fetching user data: ' + err);
return;
}
//console.log(results);
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
if(rows.length > 0) {
var key = row['key'];
var fb = row['facebook'];
var daddr = row['addr'];
if (req.query.a == 'userinfo') {
data = JSON.stringify(row);
res.write(data);
} else if (req.query.a == 'facebook') {
data = JSON.stringify(daddr);
res.write(data);
} else if (req.query.a == 'youtubeurl') {
data = JSON.stringify(daddr);
res.write(data);
} else {
res.write('no data');
}
} else {
res.write('no data');
console.log('no data');
}
}
res.end();
});
});
app.listen(8000);
答案 0 :(得分:1)
由于您的res.write("no data")
位于循环for...rows
内,并且没有行,因此永远不会调用它。