如何在node.js中输出mysql查询的结果作为json文件

时间:2014-10-15 11:23:52

标签: mysql json node.js

我拥有她的是这个

app.post('/login', function (req, res){
  connection.connect();
  email = req.body.email;
  password = req.body.password;
  if(email && password ) {
    console.log(email);
    console.log(password);
   // connection.query('SELECT username FROM user WHERE email =? and password = ?', [email, password], 
   // function (error, rows, fields) { 
    connection.query('SELECT * FROM user ', 
    function (error, rows, fields) {
      var str='';
      for (var i = 0;i < rows.length; i++) {
        str = str + rows[i].username;
        res.end(str);
      }
      connection.end(); 
    }); 
  }
});

所以不是只显示结果,而是希望它是这样的:

{
 "username": "ABC",
 "username": "DEF",
 "username": "HIJ"
}

2 个答案:

答案 0 :(得分:8)

第一个问题是你实际上并没有构建你想要的对象。第二个问题是你没有构建它们的数组。最后,如果res对象没有res.json之类的内容,则需要将该数组转换为JSON。

var objs = [];
for (var i = 0;i < rows.length; i++) {
    objs.push({username: rows[i].username});
}
connection.end();
res.end(JSON.stringify(objs));

答案 1 :(得分:-1)

使用Express 4.x,mysql db的输出行采用json格式。

例如,看看这个

&#13;
&#13;
sqlConnect.connection.query('SELECT * from users', function(err, rows, fields){
		if (err)
		{
			console.log("Querying error");
		}
		else
		{
			console.log(rows);
		}
		sqlConnect.connection.end();
	});
});
&#13;
&#13;
&#13;

输出格式为

&#13;
&#13;
[ RowDataPacket {
    id: 1,
    username: 'shivkanth',
    password: '1q2w3e4r',
    verified: 0 } ]
&#13;
&#13;
&#13;

所以现在你可以使用了。运营商。例如,console.log(rows [0] .username)将记录值&#39; shivkanth&#39;