如何使用drizzle inferSelect或inferInsert

问题描述 投票:0回答:1

所以我是毛毛雨的新手,这里是 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
typescript orm drizzle drizzle-orm
1个回答
0
投票

您不需要将 eyeScheme 类型分配给查询。这是由 Drizzle 本身自动完成的。 例如,inferSelect 类型用于控制函数的传入类型。

async function createEye({ value }: NewEye) {
  await db.insert(eyeSchema).values({ value });
}
© www.soinside.com 2019 - 2024. All rights reserved.