所以我是毛毛雨的新手,这里是 typeorm 的忠实粉丝,我知道这有多么值得怀疑,但无论如何。
我创建了我的架构和我的第一个查询,阅读了有关 inferSelect types 和 typeof 的内容以安全地检查查询结果,但我可以按正确的键来查找如何使用它们。
import {pgTable, varchar} from 'drizzle-orm/pg-core';
import {defaults} from "../../db/schema/defaults";
export const eyeSchema = pgTable('eye', {
id: defaults.id,
value: varchar('value', { length: 256 }).notNull(),
});
export type Eye = typeof eyeSchema.$inferSelect; // return type when queried
export type NewEye = typeof eyeSchema.$inferInsert; // insert type
const a: typeof eyeSchema = await db.query.eye.findMany();
const b = await db.select().from(eyeSchema);
编译 ts 文件时失败,我真的不知道为什么..
Type '{ [x: string]: unknown; }[]' is not assignable to type 'PgTableWithColumns<{ name: "eye"; schema: undefined; columns: { id: PgColumn<{ name: "id"; tableName: "eye"; dataType: "number"; columnType: "PgSmallInt"; data: number; driverParam: string | number; notNull: true; hasDefault: false; enumValues: undefined; baseColumn: never; }, {}, {}>; value: PgColumn<...>; }; diale...'.
Type '{ [x: string]: unknown; }[]' is missing the following properties from type 'PgTable<{ name: "eye"; schema: undefined; columns: { id: PgColumn<{ name: "id"; tableName: "eye"; dataType: "number"; columnType: "PgSmallInt"; data: number; driverParam: string | number; notNull: true; hasDefault: false; enumValues: undefined; baseColumn: never; }, {}, {}>; value: PgColumn<...>; }; dialect: "pg"; }>': _, $inferSelect, $inferInsert, [IsDrizzleTable], getSQL
您不需要将 eyeScheme 类型分配给查询。这是由 Drizzle 本身自动完成的。 例如,inferSelect 类型用于控制函数的传入类型。
async function createEye({ value }: NewEye) {
await db.insert(eyeSchema).values({ value });
}