使用 pg-promise 将 SELECT 的结果直接映射到预定义的 class

Mapping result from SELECT directly to a predefined class with pg-promise

假设我有一个 class

class Dog {
    id: number
    legs: number
}

和一个具有相同属性的table。我正在使用 pg-promise 像这样从数据库中查询:

getDogs(): Promise<Dog[]> {
    return obj.any('SELECT id, legs FROM Dog')
}

我想这样调用这个函数:

const dogs: Dog[] = await Database.getDogs()

我想要的是自动映射到狗数组的结果。现在我必须遍历结果并手动映射每个结果,然后将其添加到数组中,我不想对从数据库查询的每个对象都这样做。

为此使用方法Database.map<T=any>

getDogs(): Promise<Dog[]> {
    return obj.map<Dog>('SELECT id, legs FROM Dog', [], a => new Dog(a));
}

您的 class 将是:

class Dog {
    constructor(row: any) {
        this.id = row.id;
        this.legs = row.legs;
    }
    id: number
    legs: number
}

其他有用的链接: