学习Drizzle遇TS2339错误:UserTable不存在于DrizzleTypeError类型
解决Drizzle的TS2339错误:Property 'UserTable' does not exist on type 'DrizzleTypeError'
问题根源
错误提示明确指出缺少schema泛型参数——创建数据库实例时,没有把定义的表结构传递给Drizzle,导致TypeScript无法识别db.query下的表对象。
修复步骤
1. 修正db.ts的数据库实例配置
确保调用drizzle函数时,传入schema作为泛型和配置参数:
import { drizzle } from 'drizzle-orm/mysql2'; import mysql from 'mysql2/promise'; import { UserTable } from './schema/schema'; // 初始化数据库连接池(根据你的实际配置修改) const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'your-password', database: 'your-database-name', }); // 关键:传入schema让Drizzle识别表结构 export const db = drizzle(pool, { schema: { UserTable } });
2. 修正查询语句的错误用法
你当前用的with是用于关联子表的,单表查询应该用columns指定返回字段:
import { db } from "./db/db"; import { UserTable } from "./db/schema/schema"; async function main(){ const result = await db.query.UserTable.findMany({ columns: { // 替换with为columns name: true }, }); console.log(result) } main()
额外说明
如果有多个表,只需在schema配置里添加所有表对象即可,例如:
export const db = drizzle(pool, { schema: { UserTable, PostTable, CommentTable } });
内容的提问来源于stack exchange,提问作者Stykgwar
相关产品推荐
相关产品推荐

