You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Drizzle操作PostgreSQL时插入stop表随机出现TypeScript错误

Drizzle + PostgreSQL 插入stop表时随机出现TypeScript错误

问题详情

使用Drizzle ORM对接PostgreSQL数据库,执行stop表插入操作时随机触发TypeScript类型错误,但其他表采用完全相同的查询逻辑可正常运行。

插入查询代码

await db.insert(stopTable).values({
  name: stopDetails.name,
  latitude: stopDetails.latitude,
  longitude: stopDetails.longitude,
});

表结构定义

export const stopTable = pgTable("stop", {
  id: uuid("id").primaryKey().defaultRandom(),
  name: text("name").notNull(),
  latitude: decimal("latitude").notNull(),
  longitude: decimal("longitude").notNull(),
});

已排查动作

  • 已推送Schema到数据库
  • 排查过decimal类型的定义与传入值的匹配问题
  • 所有Drizzle相关导入均来自"drizzle-orm/pg-core"

可能的解决方向

  • 显式约束传入值类型
    随机类型错误大概率是stopDetails的类型推导不稳定导致的,手动约束类型或转换传入值:

    await db.insert(stopTable).values({
      name: stopDetails.name as string,
      latitude: stopDetails.latitude as `${number}`,
      longitude: stopDetails.longitude as `${number}`,
    });
    
  • 更新Drizzle依赖版本
    部分旧版本Drizzle在处理decimal类型的类型推导时有偶发bug,尝试升级到最新稳定版:

    npm update drizzle-orm drizzle-kit
    
  • 清理TypeScript缓存
    TS缓存可能导致类型推导异常,执行命令清理缓存:

    rm -rf node_modules/.cache
    npx tsc --clearCache
    
  • 检查stopDetails的类型定义
    确认stopDetails的类型是否存在可选值或联合类型冲突,比如latitude是否可能为number | null,而表定义是notNull(),这种情况会随机触发类型检查错误。

内容的提问来源于stack exchange,提问作者SteakFisher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 22:29:49