@femalemoustache

Node.js(Express.js + Sequelize.js ORM): Почему запрос не получает результатов?

Есть приложение на основе Express. База данных - postgresql, ORM - Sequelize. Это обработчик POST-запроса, в котором мне нужно получить пользователя из базы по username.

// /routes/login.js
router.post('/', function(req, res, next) {
  models.User.findAll({ 
    where: { 
      username:req.body.username 
    } 
  }).then(function(user) {
    console.log(user);
  });
  res.render('login');
});

В командной строке выводится текст запроса и результат(пустой массив):
Executing (default): SELECT "id", "username", "password" FROM "Users" AS "User" WHERE "User"."username" = 'admin';
[]

Хотя такой пользователь есть, проверяю с помощью psql запросом
SELECT id, username, password FROM Users WHERE username = 'admin';

Пробовал то же самое с помощью .findOne():
router.post('/', function(req, res, next) {
  models.User.findOne({ 
    username: req.body.username 
  }).then(function(user) {
    console.log(user);
  });
  res.render('login');
});

Лог запроса:
Executing (default): SELECT "id", "username", "password" FROM "Users" AS "User" LIMIT 1;
null

Т.е. .findOne() при формировании запроса проигнорировал аргумент { username:req.body.username }. Поле req.body.username приходит, проверял.

Подскажите, что не так?
  • Вопрос задан
  • 2789 просмотров
Пригласить эксперта
Ответы на вопрос 1
Kotofey
@Kotofey
Явных ошибок не вижу. Я бы перепроверил настройки коннекта Sequeliz'a.

Что касается findOne, то тут у Вас неверный синтаксис, должно быть так же как и для findAll:
models.User.findOne({ 
    where: { 
      username : req.body.username 
    } 
  })
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы