Укажите имя столбца в поле где (или) условие в последовательности

#node.js #sequelize.js

Вопрос:

Как добавить или указать условие вместе с исходным столбцом в приведенном ниже коде.

В основном я ищу текст в нескольких столбцах. Ниже приведена ошибка, возникающая при user.name входит в стоимость.

 UnhandledPromiseRejectionWarning: SequelizeDatabaseError: Unknown column 'flights.user.name' in 'where clause'
 

Ниже приведен код.

 const conditionObj = {
  [Op.or]: [
    {
      source: {
        [Op.like]: `%${text}%`
      }
    },
    {
      destination: {
        [Op.like]: `%${text}%`
      }
    },
    {
      "user.name": {
        [Op.like]: `%${text}%`
      }
    }
  ]
};

const list = await db.flights.findAndCountAll({
  where: conditionObj,
  attributes: [
    "id", "source", "destination"
  ],
  include: [
    {
      association: "user",
      attributes: ["id", "name", "mobile", "email"]
    },
  ]
});
 

Ответ №1:

Для связанных моделей попробуйте обернуть имена полей $ следующим образом:

 {
  "$user.name$": {
    [Op.like]: `%${text}%`
  }
}
 

Смотрите официальную документацию