簡體   English   中英

無法使用 sequelize 和 mysql 根據包含的模型屬性過濾數據

[英]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_urlsas: "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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM