2015-04-27 4 views
2

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

models.account.findAll({ 
    attributes: ['password'], 
    include: [{ 
      model: models.user, 
      as : 'user' 
    }], 
    where: { 
     'password': password, 
     'user.email': email 
     } 
}).then(function(res){ 
    console.log(res); 
}); 

Его генерирующего следующий запрос:

SELECT * 
FROM `accounts` AS `account` 
     LEFT OUTER JOIN `users` AS `user` 
        ON `account`.`user_id` = `user`.`id` 
WHERE `account`.`password` = 'PASSWORD' 
     AND `account`.`user.email` = '[email protected]'; 
      ^^^^^^^^^^^^^^^^^^^^^^ 

Таким образом, его дает мне ошибку: Unknown column 'account.user.email' in 'where clause'. Я хочу только user.email. Ожидаемый запрос:

SELECT * 
    FROM `accounts` AS `account` 
      LEFT OUTER JOIN `users` AS `user` 
         ON `account`.`user_id` = `user`.`id` 
    WHERE `account`.`password` = 'PASSWORD' 
      AND `user`.`email` = '[email protected]'; 

Что я делаю неправильно ???

ответ

4

Помещенный где фильтр для таблицы пользователей в разделе включают:

models.account.findAll({ 
    attributes: ['password'], 
    include: [{ 
    model: models.user, 
    where: { 
     email: email 
    } 
    }], 
    where: { 
    password: password 
    } 
}).then(function(res){ 
    console.log(res); 
}); 
Смежные вопросы