模式"/>
Node.js/TypeScript 中的存储库模式
我一直在尝试在 Node.js 和 Typescript 中实现存储库模式,并取得了一些成功。
但是我在尝试定义创建函数时遇到了困难,该函数应该在我的数据库表中创建一个新行。
我的存储库接口定义如下:
export interface BookRepository {
create(book: Book): Promise<Book | null>
}
Book是我的领域模型,定义如下:
export type Book = {
id: number
name: string
author: string
}
id 是在 Postgres 中使用自动递增值创建的,因此它不是在我的代码中创建的。
问题是当创建 Book 的新对象时,它需要一个 id 字段。
我该如何解决这个问题?我的 API 中确实需要 id,所以我不能排除它。
回答如下:一种可能的方法是让编译器知道 id 不是参数的一部分:
export interface BookRepository {
create(book: Omit<Book, 'id'>): Promise<Book | null>
}
这会保留您设计的类型,但可以放松那里的输入合同。
更多推荐
Node.js/TypeScript 中的存储库模式
发布评论