我使用mysql模块nodejs-mysql 我有两个表,他们的结构是这样的:
表缺刻
id |nick |
--------------
1 |Arnold |
2 |Bob |
表格顺序
nick |money |
---------------
Arnold |12 |
Arnold |43 |
Arnold |3 |
Bob |32 |
Bob |2 |
我想得到一个结构如下的json对象:
[
{id:1, nick:'Arnold', order:[{money:12},{money:43},{money:3}]},
{id:2, nick:'Bob', order[{money:32},{money:2}]}
]
那我该怎么办?我使用nodejs
我尝试了什么:
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'example.org',
db : 'db'
user : 'user',
password : 'secret'
});
connection.connect();
connection.query('select * from nicks',function(err,data){
//here I travese the data array,and select the order table to get the money filed data.
});
我知道如何使用node.js创建查询,我只是不知道获取我想要的结果的方法。我不知道如何进行正确的查询。
答案 0 :(得分:4)
这是另一种解决方案:
var mysql = require('mysql');
var conn = mysql.createConnection({
host : 'localhost',
database : 'test',
});
var query = ' \
SELECT id, nicks.nick, GROUP_CONCAT(money) AS money \
FROM nicks, orders \
WHERE orders.nick = nicks.nick \
GROUP BY id';
conn.query(query, function(err, rows, fields) {
rows.forEach(function(row) {
row.order = row.money.toString().split(',').map(function(value) {
return { money : Number(value) };
});
delete row.money;
});
// as an example, we'll print the object as JSON
console.log(JSON.stringify(rows, null, 2));
});
答案 1 :(得分:-1)
按照https://github.com/felixge/node-mysql上的文档进行操作 您需要设置连接并查询db
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'example.org',
user : 'bob',
password : 'secret'
});
var queryString = "SELECT * FROM nicks n JOIN order o ON n.nick=o.nick";
connection.query(queryString, function(err, rows) {
var outputJSON = [];
for row in rows{
outputJSON.push(row);
}
return outputJSON.toJSON()
});
您需要实现函数toJSON,通过仅选择您需要的所需字段来格式化您的输出JSON