Возврат столбца с помощью node-mysql (например, fetchColumn в PDO)

Есть ли способ вернуть один столбец с помощью node-mysql? Я ищу что-то похожее на fetchColumn в PDO.

Например, скажем, у меня есть следующий запрос:

database.query("SELECT id FROM user", function(error, row) {
  console.log(row);
});

Это приведет к:

[{id: 1}, {id: 2}, {id: 3}, ...]

Вместо этого я хотел бы:

[1, 2, 3, ...]

Я могу запустить цикл для извлечения данных, что я и делал, но я нахожу это снова и снова, поэтому мне интересно, есть ли простое решение.


person David Jones    schedule 16.06.2013    source источник


Ответы (1)


Вероятно, вы могли бы добавить свою собственную функцию в класс базы данных элегантным способом, но, поскольку Javascript имеет функциональную поддержку, ненавязчивым способом было бы просто обернуть вашу функцию, получающую результаты, в функцию-оболочку, которая удаляет ключ;

single_value = function(fn) {
  return function(e,r) {
    for(var k in r)
      break;
    return fn(e, k === undefined ? undefined : r[k]);
  }
}

Таким образом, вы можете вызвать обычную функцию запроса как;

database.query("SELECT id FROM user", single_value(function(error, row) {
  console.log(row);
}));

1
2
3
...
person Joachim Isaksson    schedule 16.06.2013