MySQL8.0 xdevapi node.js не возвращает ключи, только значения - PullRequest
0 голосов
/ 28 августа 2018

Используя MySQL 8.0 на сервере node.js (X DevAPI), я пытаюсь получить данные с помощью

var res = session.sql('SELECT * FROM users').execute(function (row) {
  console.log(row); // [1,'foo','bar']
});

но это возвращает только массив значений. Имена столбцов отсутствуют. Есть ли способ получить пары ключ-значение, например, в классических наборах данных SQL?

т.е. id: 1, fName: 'foo', lName: 'bar'

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Используйте в своем запросе функцию JSON_OBJECT .

 var res = session.sql("select JSON_OBJECT('id', id, 'name', name) from users").execute(function (row) {
      console.log(row); // {"id": 87, "name": "rui"} 
 });
0 голосов
/ 28 августа 2018

Прямо сейчас вам нужно будет построить структуру пары ключ-значение «вручную», используя метаданные столбца , доступные через второй callback параметр для execute().

Что-то вроде следующего поможет?

var result = []

session.sql('SELECT 1 AS id, "foo" AS fName, "bar" AS lName')
  .execute(row => {
    row.forEach((value, i) => { result[i] = Object.assign({}, result[i], { value }) })
  }, columns => {
    columns.forEach((key, i) => { result[i] = Object.assign({}, result[i], { key: key.getColumnName() }) })
  })

console.log(result.reduce((res, pair) => Object.assign(res, { [pair.key]: pair.value }), {}))

Я должен признать, что это запутанно, а улучшение уже на радаре.

Отказ от ответственности: я - ведущий разработчик разъема X DevAPI.

...