使用 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
}
其他有用的链接:
假设我有一个 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
}
其他有用的链接: