2016-07-31 5 views
0

ОБНОВЛЕНО :::: Я пытаюсь вернуть список пользователей на основе поискового запроса, который я получаю от клиента. Пользователь имеет много навыков. Я хотел бы вернуть всех пользователей, выполнив поиск термина во всех возможных полях пользователя, включая заголовок умения.Sequelize js query через hasMany relationship

мои таблицы и отношения в файле БД, поэтому вы увидите db.Skill

////// db File 
User.belongsToMany(Skill, {through: 'UserSkills', foreignKey: 'mentorId'}); 
Skill.belongsToMany(User, {through: 'UserSkills', foreignKey: 'skillId'}); 

////// model file 
exports.learnerSearchMentors = function(req, res, term){ 
db.User.findAll({ 
where: { 
$or: [ 

     { username  : { $like: '%' + term + '%'}}, 
     { firstname  : { $like: '%' + term + '%'}}, 
     { lastname  : { $like: '%' + term + '%'}}, 
     { email   : { $like: '%' + term + '%'}}, 
     { phone   : { $like: '%' + term + '%'}}, 
     { description : { $like: '%' + term + '%'}}, 
     {'$skills.title$': { $like: '%' + term + '%'}} 
    ] 
    }, 
    include : [{ 
       model : db.Skill, {through: 'UserSkills'}, 
       as: 'skills' 
      }] 
}) 
.then(function(mentors){ 
    console.log("line 58: list of found mentors by term"); 
    res.status(200).send(mentors) 
}) 
.catch(function(err){ 
    console.error(err.message); 
    res.status(500).send(err.message); 
}); 
} 

ответ

0

Для доступа включены таблицы из родителей, где положение обертка колонки как этот $includedTable.column$

в вашем case будет выглядеть так:

db.User.findAll({ 
    where: { 
    $or: [ 
     { 
     username: { 
      $like: '%' + term + '%' 
     } 
     }, 
     ... 
     { 
     '$skills.title$' : { 
      $like: '%' + term + '%' 
     } 
     } 
    ] 
    }, 
    include : [{ 
    model : db.Skill, 
    as: 'skills' 
    }] 
}) 
.then(function(mentors){ 
    console.log("line 58: list of found mentors by term"); 
    res.status(200).send(mentors) 
}) 
.catch(function(err){ 
    console.error(err.message); 
    res.status(500).send(err.message); 
}); 
+0

Спасибо Тилекбеков. Мне пришлось изменить отношения сегодня утром на основе User.belongsToMany (Skill, {через: 'UserSkills', foreignKey: 'mentorId'}); Skill.belongsToMany (Пользователь, {через: 'UserSkills', foreignKey: 'skillId'}); поэтому я должен искать название навыка через таблицу соединений – MB060606

Смежные вопросы