Node.js JOIN 查询:格式化 JSON 输出

4

我将制作一个相当简单的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结构。 - Abhik Chakraborty
你确定没有任何格式化输出选项吗? - gr3g
据我所知,使用Express和MySQL连接后,您获得的结果是标准的key:val格式表示的数据。现在,您需要根据自己的需求自定义结果,或者检查是否有中间件或辅助模块可用于此目的。 - Abhik Chakraborty
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
7

为了易读性而包装:

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);
});

可以用。非常感谢,老兄。你真是个省时的好帮手。 - marcode_ely

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,