2013-07-28 45 views
2

我想知道返回一堆JSON的最佳方法,這是一些依賴mysql查詢的結果。將node-mysql結果行合併爲單個JSON返回的node.js

app.get('/viewing/:id', function (req, res){ 
    if(!req.cookies.user) { 
     res.end('Requires Authenticated User'); 
    } else { 
     connection.query('SELECT blah blah where userId='+req.params.id, 
     function (error, rows, fields) { 

現在我們行的一堆 - 讓說5我需要經過每一個,並根據我剛剛得到了數據的另一個MySQL查詢。所以,我最終需要重複調​​用(做我循環?)

  connection.query('SELECT id, firstName, lastName from users where id='+AN_ID_FROM_PRIOR_QUERY, 
      function (error2, rows2, fields2) { 

      }); 
      } 
     } 

如何從每個第二查詢的重複選擇的行合併成可以返回JSON的單個對象?

  res.writeHead(200, {'Content-Type': 'text/plain'}); 
      res.end(JSON.stringify(results)); 
      } 
     }); 
    } 
}); 
+0

你肯定不能有一個sql語句這裏加入? –

回答

2

提問並回答。

Async.js實用程序有很多好東西,包括map functionunderscores.js幫助收拾東西!

app.get('/viewing/:id', function (req, res){ 
    if(!req.cookies.user) { 
     res.end('Requires Authenticated User'); 
    } 
    else { 
    connection.query('SELECT something,somethingelse from mytable where userId = ?',[req.params.id], function (error, rows, fields) { 
     async.map(rows, getUsers, function(err, results){ 
     res.writeHead(200, {'Content-Type': 'text/plain'}); 
     res.end(JSON.stringify(_.flatten(_.compact(results)))); 
     }); 
    }); 
    } 
}); 

function getUsers(user, callback) { 
    connection.query('SELECT id,firstName,lastName FROM users WHERE id = '+ user.otherId, function(err, info) { 
     if(err) { 
      console.log(err); 
      return callback(err); 
     } 
     else { 
      return callback(null, info); 
     } 
    }); 

}