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

Posted

技术标签:

【中文标题】如何在node.js中将mysql查询的结果输出为json文件【英文标题】:How to output result of a mysql query as a json file in node.js 【发布时间】:2014-12-10 10:59:46 【问题描述】:

我有她的是这个

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"

【问题讨论】:

你能澄清一下吗?您要执行哪个查询?似乎注释掉的查询是您想要的查询?你想要的输出是不可能的。您不能在单个对象上拥有相同的键。 刚刚修改了,有什么帮助吗? 提示:JSON.stringify :) 更有意义,但您期望的输出是不可能的。不过,['ABC', 'DEF', 'HIJ'] 这样的用户名数组也可以使用。 你能告诉我怎么做吗,我试过 JSON.stringify(str) 它只是把 str 放在双引号之间现在我想要它作为一个数组 【参考方案1】:

第一个问题是您实际上并没有构建您想要的对象。第二个问题是您没有构建它们的数组。最后,如果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));

【讨论】:

【参考方案2】:

在 Express 4.x 中,mysql db 的输出行是 json 格式。

例如,看看这个

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

输出格式为

[ RowDataPacket 
    id: 1,
    username: 'shivkanth',
    password: '1q2w3e4r',
    verified: 0  ]

所以现在您可以使用 .操作员。例如,console.log(rows[0].username) 将记录值 'shivkanth'

【讨论】:

以上是关于如何在node.js中将mysql查询的结果输出为json文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 mysql npm 的查询中将 *array of objects* 从 MySQL 返回到 Node js 服务器?

如何在 node.js 环境中将查询语句传递给 bigquery

如何在node.js中将json数组数据插入mysql?

如何在 Node.js 和 Express 上的同一个 .ejs 文件上呈现 MySQL 查询的多个结果?

使用 Node.JS 查询 MySQL 并在网页中显示结果

带有mysql查询的异步函数不会返回查询结果node.js