From 3614ac6350bf8627a3868f5a659e0331a69542ac Mon Sep 17 00:00:00 2001 From: HenryDu8133 <813367384@qq.com> Date: Sat, 26 Sep 2026 15:12:07 +0800 Subject: [PATCH] =?UTF-8?q?fix(schedule):=20=E4=BF=AE=E5=A4=8D=E6=8E=92?= =?UTF-8?q?=E6=9C=9F=E9=87=8D=E6=8E=92=E6=8E=A5=E5=8F=A3=E5=9B=A0=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E9=81=AE=E8=94=BD=E8=80=8C=E5=BF=85=E7=84=B6=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sequence.post.ts 中 \const { schedules } = body\ 在 try 作用域内遮蔽了从 schema 导入的 Drizzle 表对象,导致 db.update(schedules) 实际传入的是请求体 数组而不是表,接口一被调用就抛错(网页版的拖拽排序同样受影响)。 改用 scheduleItems,并补注释说明该陷阱。 --- server/api/admin/schedule/sequence.post.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/server/api/admin/schedule/sequence.post.ts b/server/api/admin/schedule/sequence.post.ts index 2be93f4..82f20ec 100644 --- a/server/api/admin/schedule/sequence.post.ts +++ b/server/api/admin/schedule/sequence.post.ts @@ -14,9 +14,11 @@ export default defineEventHandler(async (event) => { try { const body = await readBody(event) - const { schedules } = body + // 注意:不要写成 const { schedules } = body —— 那会在本作用域内遮蔽上面导入的 + // Drizzle 表对象,导致下面 db.update(schedules) 实际拿到的是请求体数组,接口必然报错。 + const scheduleItems = body?.schedules - if (!schedules || !Array.isArray(schedules) || schedules.length === 0) { + if (!scheduleItems || !Array.isArray(scheduleItems) || scheduleItems.length === 0) { throw createError({ statusCode: 400, statusMessage: '缺少排期数据' @@ -25,7 +27,7 @@ export default defineEventHandler(async (event) => { // 批量更新排期顺序 const results = await Promise.all( - schedules.map(async (item) => { + scheduleItems.map(async (item) => { return db .update(schedules) .set({ sequence: item.sequence })