【问题标题】:Nodejs JOIN query: formatting JSON outputNodejs JOIN 查询:格式化 JSON 输出
【发布时间】:2015-06-07 08:59:11
【问题描述】:

我正在做一个非常简单的 RIGHT JOIN 查询,但我无法正确格式化输出。

这里是查询:

connection.query({sql : "SELECT users.*, rides.* FROM users RIGHT JOIN rides ON users.id = rides.id_user WHERE users.id = ?", nestTables: '_', values : [id] }, function(err, rows){
   console.log(rows);
});

这是我的输出:

[ { users_id: 52,
    users_firstname: 'greg', //End first table data
    rides_latitude: '50.847454', //Second table data: row 1
    rides_longitude: '4.358356',
  },
  { users_id: 52,
    users_firstname: 'greg', //Exactly the same first table data
    rides_latitude: '50.9', //Second table data: row 2
    rides_longitude: '4.4',
   } ]

这是我想要的输出:

[ { users_id: 52,
    users_firstname: 'greg',
    rides : [
         {
         rides_latitude: '50.847454',
         rides_longitude: '4.358356'
         },
         {
         rides_latitude: '50.9',
         rides_longitude: '4.4'
         }
   ]
  }]

如你所见,我试过nestTables

【问题讨论】:

  • 您需要遍历结果并构建您自定义的 json 结构。
  • 您确定没有任何格式化输出选项吗?
  • 据我所知,使用 express 和 mysql connect 得到的结果是标准结果,其中数据以 key:val 格式表示。现在您需要根据需要自定义结果,或者检查是否有一些中间件或帮助模块可用。

标签: mysql json node.js


【解决方案1】:

为易读性包装:

connection.query({
    sql : "SELECT \
              users.users_id, \
              users.users_firstname, \
              rides.rides_latitude, \
              rides.rides_longitude \
           FROM \
              users \
              RIGHT JOIN rides ON users.id = rides.id_user \
           WHERE \
              users.id = ?", 
    nestTables: '_', 
    values : [id]
}, function (err, rows) {
    var result = [], index = {};

    if (err) throw err;

    rows.forEach(function (row) {
        if ( !(row.users_id in index) ) {
            index[row.users_id] = {
                users_id: row.users_id,
                users_firstname: row.users_firstname,
                rides: []
            };
            result.push(index[row.users_id]);
        }
        index[row.users_id].rides.push({
            rides_latitude: row.rides_latitude,
            rides_longitude: row.rides_longitude
        });
    });

    console.log(result);
});

【讨论】:

  • 为我工作。非常感谢伙计。您可以节省时间。
猜你喜欢
  • 2014-12-12
  • 1970-01-01
  • 2013-07-16
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 1970-01-01
相关资源
最近更新 更多