将Prisma写法的TypeScript Switch函数转为Drizzle写法求助
将Prisma的Clerk事件处理逻辑转换为Drizzle ORM写法
原Prisma逻辑说明
这段代码用于处理Clerk的user.created事件:
- 从事件数据中提取用户ID
- 检查
account表中是否已存在该用户ID对应的记录 - 若不存在,则创建一条关联该用户ID的账户记录
你代码中的问题
- 计数查询时,给计数结果的别名是
value,但解构时用了count,导致count变量未定义 - 原逻辑操作的是
account表,你错误地操作了users表 - 插入数据时字段名写错,原逻辑需要存入
userId,你写成了name
修正后的Drizzle代码
const { id } = evt.data; const eventType = evt.type; switch (eventType) { case "user.created": { // 查询account表中该userId的记录数 const [{ count = 0 }] = await db .select({ count: count(accounts.id) }) .from(accounts) .where(eq(accounts.userId, id!)); // 如果无对应记录,创建新账户 if (!count) { await db.insert(accounts).values({ userId: id! }); } break; } default: { console.error(`未配置的事件类型: ${eventType}`); } }
关键修正点
- 确保操作的是
account表(对应你的Drizzle Schema中的accounts表) - 计数查询的字段别名与解构变量保持一致(统一用
count) - 插入时使用正确的字段名
userId,匹配原逻辑需求 - 补充
break语句避免switch分支穿透(原Prisma代码也遗漏了,建议补上)
内容的提问来源于stack exchange,提问作者user26830065
相关产品推荐
相关产品推荐

