nodejs 查询课程列表需要在订单表里查询购买数量,使用的是sequelize.literal,本地查询没问题,放到服务器一直报错,各位大佬帮忙看下,谢谢。
查询:
const courses = await this.findAll({
limit: pageSize, // total num
offset: (currPage - 1) * (pageSize), // current page
where: filter,
order,
attributes: {
include: [
[Sequelize.literal(`(SELECT COUNT(*) FROM wx_pay WHERE wx_pay.goods_id = course.id)`), 'orderCount'],
[Sequelize.literal(`(SELECT COUNT(*) FROM video_list WHERE video_list.vid = course.id)`), 'lessonCount']
]
},
include: [{
model: Category,
as: 'category',
attributes: ['id', 'name']
}, {
model: Teacher,
as: 'teacher',
attributes: ['id', 'title', 'avatar', 'description']
}
]
})
本地返回结果是对的,没问题【lessonCount 和 orderCount】
{
"code": 200,
"msg": "success",
"errorCode": 0,
"data": {
"data": [
{
"id": 4366,
"title": "اباي جولى رومانىنىڭ قىسقاشا مازمۇنى-كەسكىندى نۇسقا",
"orderCount": 3,
"lessonCount": 28,
"category": {
"id": 76,
"name": "اۋديو كىتاپ"
},
"teacher": {
"id": 20,
"title": "ارنا ءبىلىم قامباسى",
"avatar": "https://qazkitap.otirar.com/16549365961501382-20220611-file.png",
"description": ""
}
},
{
"id": 4365,
"title": "ءادىل احمەتوۆتىڭ ءومىرى جانە ونەرى ءجايىندا سۇحبات",
"orderCount": 4,
"lessonCount": 1,
"category": {
"id": 81,
"name": "سۇحبات"
},
"teacher": {
"id": 20,
"title": "ارنا ءبىلىم قامباسى",
"avatar": "https://qazkitap.otirar.com/16549365961501382-20220611-file.png",
"description": ""
}
}
],
"meta": {
"pagenum": 1,
"pagesize": 2
}
}
}
放到云服务器找不到字段,报这个错误
readable:289:9)
0|bilim | at Socket.Readable.push (node:internal/streams/readable:228:10) {
0|bilim | code: 'ER_BAD_FIELD_ERROR',
0|bilim | errno: 1054,
0|bilim | sqlState: '42S22',
0|bilim | sqlMessage: "Unknown column 'course.id' in 'where clause'",
0|bilim | sql: 'SELECT `Course`.`id`, `Course`.`title`, `Course`.`image`, `Course`.`cate_id`, `Course`.`status`, `Course`.`description`, `Course`.`views`, `Course`.`sort`, `Course`.`type`, `Course`.`recommend`, `Course`.`is_free`, `Course`.`price`, `Course`.`old_price`, `Course`.`price_time`, `Course`.`is_vip`, `Course`.`keywords`, `Course`.`popup_ad_time`, `Course`.`count_type`, `Course`.`collection_num`, `Course`.`created_at`, `Course`.`updated_at`, `Course`.`deleted_at`, `Course`.`teacher_id`, `Course`.`topic_id`, (SELECT COUNT(*) FROM wx_pay WHERE wx_pay.goods_id = course.id) AS `orderCount`, (SELECT COUNT(*) FROM video_list WHERE video_list.vid = course.id) AS `lessonCount`, `category`.`id` AS `category.id`, `category`.`name` AS `category.name`, `teacher`.`id` AS `teacher.id`, `teacher`.`title` AS `teacher.title`, `teacher`.`avatar` AS `teacher.avatar`, `teacher`.`description` AS `teacher.description` FROM `course` AS `Course` LEFT OUTER JOIN `category` AS `category` ON `Course`.`cate_id` = `category`.`id` AND (`category`.`deleted_at` IS NULL) LEFT OUTER JOIN `teacher` AS `teacher` ON `Course`.`teacher_id` = `teacher`.`id` AND (`teacher`.`deleted_at` IS NULL) WHERE (`Course`.`deleted_at` IS NULL AND (`Course`.`deleted_at` IS NULL AND `Course`.`status` = 1 AND `Course`.`teacher_id` = 20)) ORDER BY `Course`.`id` DESC LIMIT 0, 2;',
sequelize version: 6.21.2
mysql2 version: 2.3.3
nodejs version: v16.15.1
npm version: 8.11.0
Mysql version: mysql-8.0.29-linux-glibc2.12-x86_64
参考地址为:sequelize子查询
各位大佬帮我看下,愁了好几天,一直没解决