【问题标题】:Convert NodeJs MySQL result to accessible JSON Object将 NodeJs MySQL 结果转换为可访问的 JSON 对象
【发布时间】:2020-01-27 11:20:50
【问题描述】:

我想从我的数据库中获取一些数据。示例:

  getCarIds: function (callback) {
    db.query("SELECT Id FROM Cars;",
      function (err, result) {
        if (err) throw err;

        result = JSON.stringify(result);

        var cars = [];

        for (var i = 0; i < result.length; i++) {
          var currentCar = result[i];
          var carId = currentCar.id;
          cars.push(carId);
        }

        callback(cars);
      });
  }

我想将所有 id 存储到一个数组中。喜欢

cars = [1,2,3,4,5];

结果返回 this

[ RowDataPacket { Id: '1' },
  RowDataPacket { Id: '2' },
  RowDataPacket { Id: '3' } ]

所以我尝试通过写来转换它

result = JSON.stringify(result);

这会返回我

[{"Id":"1"},{"Id":"2"},{"Id":"3"}]

当我想通过写来访问这个对象时

result[0]

我明白了

[

很明显

result[0].id

会回来

undefined

如何从对象中获取所有 id?

【问题讨论】:

  • 你要解析它,result = JSON.parse(JSON.stringify(result));
  • 也可以试试JSON.Stringify(result[0].id);

标签: javascript mysql json node.js


【解决方案1】:

假设你有一个来自 mysql 的名为 results 的结果数组 RowDataPacket。您可以使用 Object.assign()。例如,如果您想将第一个元素转换为常规对象:

var normalObj = Object.assign({}, results[0]);

或者如果您希望将整个数组转换为普通对象:

var normalResults = results.map((mysqlObj, index) => {
    return Object.assign({}, mysqlObj);
});

或更简洁的语法:

results = results.map(v => Object.assign({}, v));

【讨论】:

    【解决方案2】:

    您不需要stringify result。只需处理result 照原样。

    并使用currentCar.Id 而不是currentCar.id

    【讨论】:

    • “只处理result”到底是什么意思?
    猜你喜欢
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2014-04-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多