使用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
相关产品推荐
相关产品推荐

