mongoose Typescript接口扩展/通用

5w9g7ksd  于 2022-11-13  发布在  Go
关注(0)|答案(1)|浏览(174)

让我们假设我们有一个依赖mongoose查询的typescript前端。

export interface Item {
    name: string;
    sku: string;
    manufacturer: Manufacturer;
    foo: bar;
    ...
}

这对于创建文档非常有用,但是一旦从数据库中获取数据,就会附加一些额外的数据,比如“_id”、“_createdAt”等等。过去,我采用了一种非常麻烦的方法来创建一个接口,比如“MongooseDocumentItem”,并使用额外的数据扩展了原来的接口。但是一旦这样做了,在创建下一个接口时就会重复自己的操作。所以实际上,类似于

export interface MongooseDocument<T> {
    _id: string;
    data: T;
    ...
}

但是这种方法改变了传入数据结构的接口(推入数据键)。正确的方法是什么?应该有一个非常明显的解决方案,我已经错过了。

qnyhuwrf

qnyhuwrf1#

常见的方法是使用mongoose提供的Document类型并对其进行扩展。
第一个
但这不包括createdAtupdatedAt字段,因此您可能希望创建自己的TimestampDocument来从其进行扩展。
第一个
Playground

相关问题