[英]Not able to filter data based on included model attribute with sequelize and mysql
我有一個這樣的方法:
const getAllRequest = async (page, pageSize, order) => {
try {
const requests = await Request.findAndCountAll({
where = {
[Op.or]: [
sequelize.where(sequelize.col('requests.id'), { [Op.like]: `%${req.query.queryStr}%` }),
sequelize.where(sequelize.col('requests.user_id'), { [Op.like]: `%${req.query.queryStr}%` }),
sequelize.where(sequelize.col('requests.uuid'), { [Op.like]: `%${req.query.queryStr}%` }),
sequelize.where(sequelize.col('requests.status'), { [Op.like]: `%${req.query.queryStr}%` }),
sequelize.where(sequelize.col('requests.csv_url'), { [Op.like]: `%${req.query.queryStr}%` }),
sequelize.where(sequelize.col('request_urls.url'), { [Op.like]: `%${req.query.queryStr}%` }),
]
},
raw: true,
attributes: ['id', 'uuid', 'userId', 'status', 'csvUrl', 'requestURLs.url', 'createdAt', 'updatedAt'],
include: [{
model: RequestUrl,
as: "requestURLs",
where: { type: 'brand' },
attributes: []
}],
subQuery: false,
offset: page * pageSize,
limit: pageSize,
order
});
return {
status: 200,
message: "List of requests.",
requests
}
} catch (error) {
return Promise.reject({
status: 500,
message: "Something went wrong.",
error
});
}
}
但如果嘗試使用包含的模型屬性進行過濾,它不會返回數據。 相反,它返回:
錯誤:“where 子句”中的未知列“request_urls.url”
請幫我解決這個問題。
注意區別: request_urls和as: "requestURLs"
您的where
條件應如下 -
where = {
[Op.or]: [
sequelize.where(sequelize.col('requests.id'), { [Op.like]: `%${req.query.queryStr}%` }),
sequelize.where(sequelize.col('requests.user_id'), { [Op.like]: `%${req.query.queryStr}%` }),
sequelize.where(sequelize.col('requests.uuid'), { [Op.like]: `%${req.query.queryStr}%` }),
sequelize.where(sequelize.col('requests.status'), { [Op.like]: `%${req.query.queryStr}%` }),
sequelize.where(sequelize.col('requests.csv_url'), { [Op.like]: `%${req.query.queryStr}%` }),
sequelize.where(sequelize.col('requestURLs.url'), { [Op.like]: `%${req.query.queryStr}%` }),
]
},
我希望它有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.