Node.js多查询执行失败:插入后无法通过自增ID查询数据
问题分析与解决方法
核心问题排查
- 表名不匹配:插入操作的表是
hc_servicesdetail,但查询语句里用的是services_detail,表名不一致直接导致查询无结果甚至报错,必须将查询的表名统一为hc_servicesdetail。 - 字段名不一致:插入时用的是
serviceId、genderTypeId(驼峰命名),但查询里写的是sd.service_id、sd.gender_type_id(下划线命名),要确保SQL语句里的字段名和数据库表的实际字段名完全一致。 - 关联表字段错误:
s.service_names.time明显存在语法问题,services表不可能有嵌套属性的字段,根据实际需求调整,比如改为s.time或s.service_name。 - 缺少错误捕获:代码没有错误处理逻辑,无法定位查询失败的具体原因,必须添加try-catch捕获并打印错误信息。
修改后的示例代码
static async addServiceDetail(shopId, serviceId, genderTypeId, price, serviceName) { try { const sql2 = `INSERT INTO hc_servicesdetail (shopId, serviceId, genderTypeId, price, serviceName) VALUES (?, ?, ?, ?, ?)`; const values = [shopId, serviceId, genderTypeId, price, serviceName]; const [datass] = await pool.execute(sql2, values); const last_inserted_id = datass.insertId; // 修正表名、字段名,调整关联表字段 const sql3 = `SELECT sd.serviceId, sd.genderTypeId, sd.price, s.time FROM hc_servicesdetail sd JOIN services s ON sd.serviceId = s.id WHERE sd.id = ?`; const [rows2] = await pool.execute(sql3, [last_inserted_id]); console.log(rows2); } catch (err) { console.error('操作失败:', err); } }
内容的提问来源于stack exchange,提问作者Diana
相关产品推荐
相关产品推荐

