2014-02-28 1 views
0

nodejs가 mysql 쿼리에서 데이터를 수신하지 않는 경우를 감지하려고합니다. GET 요청을 통해 입력 한 데이터가 올바른 경우 원하는 결과를 제공합니다.nodejs 쿼리에서 mysql 데이터가 반환되지 않을 때를 탐지/지정하는 방법

협력 요청 :

http://server.com:8000?a=userinfo&user=datathatmatchesvalueindb 

비 작업 요청이 아닌 협력을 통해

http://server.com:8000?a=userinfo&user=datathatdoesn'tmatchanythinginthedb 

는 요청이 MySQL의 테이블에없는 데이터를 포함하는 경우 내 말은, 그것은 빈 표시 화이트 페이지, '데이터 없음'의 원하는 결과 대신.

if($res->num_rows === 0) 
{ 
    echo 'no data'; 
} else { 
//Do you functions here 
} 

nodejs 코드에 대한 동등한이 있습니까 :

은 MySQL의 행에 데이터가없는 경우 감지 할 경우 PHP에서

, 당신은 다음과 같은 작업을 수행 할 수 ? 당신의 res.write("no data") 루프 for...rows 내부 및 행이 없습니다로 호출되지 않습니다 때문에

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

'res.send()'를 사용하여 데이터를 가져 오는지 확인하고, 응답 체인을 계속 유지하려면'next()'를 호출하십시오. – clay

+0

next()에 대해 더 자세히 설명해 주시겠습니까? – user3259138

+0

[expressjs API] (http://expressjs.com/api.html)에서 "next()"를 검색하십시오. 응답 흐름을 유지하는 것은 실제로 미들웨어입니다. 필요하지 않을 수도 있습니다 (적어도 현재는). – clay

답변

1

: 여기

는 내가 작성한 코드입니다.

관련 문제