如何在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