使用nodejs来查询mysql数据库

时间:2013-12-26 06:59:50

标签: javascript mysql node.js

我使用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创建查询,我只是不知道获取我想要的结果的方法。我不知道如何进行正确的查询。

2 个答案:

答案 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