0
我試圖檢測nodejs何時從mysql查詢中收回沒有數據。如果通過GET請求輸入的數據是正確的,它會返回所需的結果。如何檢測/指定何時沒有從nodejs查詢返回mysql數據
工作要求:
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);
檢查以確保您使用'res.send()'獲取數據,並調用'next()'以保持響應鏈繼續。 – clay
你可以在next()上說明更多嗎? – user3259138
查看[expressjs API](http://expressjs.com/api.html)並查找「next()」。這是真正的中間件事情,以保持響應流。你可能不需要它(至少現在)。 – clay