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