Express JS возвращает null для результата запроса, и значения отображаются при запросе с помощью pgAdmin.

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

router.get('/', function(req, res) {
  console.log("/");
  const query =
    `SELECT DISTINCT name
         FROM countries`;

  db.map(query, [], a => a.json)
    .then(data => {
      res.send({
        data: data,
        status: 200
      });
    })
    .catch(error => {
      console.log(error);
      res.status(500).send('Error occured');
    });
});

В ответ получаю ответ следующего содержания:

{
  "data": [
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    ........
  ],
  "status": 200
}

Но когда я запускаю тот же запрос с помощью pgAdmin, я получаю названия стран вместо «null». Может ли кто-нибудь помочь мне разобраться в проблеме? Я новичок и понятия не имею, что здесь происходит.

Заранее спасибо.


person Naveen George Thoppan    schedule 30.07.2018    source источник
comment
Что происходит, когда вы выполняете SELECT DISTINCT name FROM countries WHERE name is NOT NULL ?   -  person David R    schedule 30.07.2018
comment
При запросе в pgAdmin я получаю 211 имен, а приведенный выше код дает 211 нулевых значений. Тот же результат с приведенным выше запросом @DavidR   -  person Naveen George Thoppan    schedule 30.07.2018
comment
какой модуль npm вы используете?   -  person Rahul Sharma    schedule 30.07.2018
comment
@RahulSharma pg-promise. Другие запросы возвращают правильные результаты.   -  person Naveen George Thoppan    schedule 30.07.2018


Ответы (1)


Ваш запрос выбирает поле name, но вы сопоставляете результаты, используя свойство с именем json. Вы должны сделать следующее:

db.map(query, [], a => a.name)
person Stefano Dalpiaz    schedule 30.07.2018