簡體   English   中英

列 users.role_name 不存在

[英]Column users.role_name does not exist

當我按role_name列排序時,會發生此錯誤:

列 users.role_name 不存在

字段的rest排序沒有問題。 這是按另一列排序的結果。

{
    "count": 1,
    "rows": [
        {
            "user_id": 1,
            "full_name": "Admin",
            "username": "admin",
            "password": "$2a$10$hAGEHofDTtJ9KZHSDbdhLe1ouKnoNcg7xSosaZrDT/ENVr4m9LAV.",
            "photosrc": "",
            "createdAt": "2019-10-11T05:55:26.114Z",
            "updatedAt": "2019-10-11T05:55:26.114Z",
            "roles_id": 1,
            "role": {
                "role_name": "Administrator"
            }
        }
    ]
}

url 請求:

/api/users/get_all?search=&sort=role_name&order=asc&pageSize=10&page=1

要求:

module.exports.getAll = async function (req, res) {
    try {
        const query = {
            where: {
                [Op.or]: [
                    {
                        full_name: {
                            [Op.iLike]: `%${req.query.search}%`
                        }
                    },
                    {
                        username: {
                            [Op.like]: `%${req.query.search}%`
                        }
                    },
                    Sequelize.where(Sequelize.col((Roles, "role_name"), "varchar"), {
                        [Op.like]: `%${req.query.search}%`
                    })
                ]
            },
            include: [{ model: Roles, attributes: ["role_name"], required: true }],
            offset: +req.query.pageSize * (+req.query.page - 1),
            limit: +req.query.pageSize,
            order: [
                [req.query.sort, req.query.order]
            ]
        };
        const users = await Users.findAndCountAll(query);
        res.status(200).json(users);
    } catch (e) {
        errorHandler(res, e);
    }
};

由於您有Roles的關系表,因此您不能直接從Users model 對其進行排序。

As Users模型的order子句僅適用於Users模型的屬性/列。

如果要根據Role_Name進行排序,則必須根據所需條件在include中包含order子句。

像這樣的東西:

      const query = {
            where: {
                [Op.or]: [
                    {
                        full_name: {
                            [Op.iLike]: `%${req.query.search}%`
                        }
                    },
                    {
                        username: {
                            [Op.like]: `%${req.query.search}%`
                        }
                    },
                    Sequelize.where(Sequelize.col((Roles, "role_name"), "varchar"), {
                        [Op.like]: `%${req.query.search}%`
                    })
                ]
            },
            include: [{ model: Roles,
                attributes: ["role_name"],
                required: true,
                order: [
                  [req.query.sort, req.query.order]
                ]
            }],
            offset: +req.query.pageSize * (+req.query.page - 1),
            limit: +req.query.pageSize,
            order: [
                [req.query.sort, req.query.order]
            ]
        };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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