javascript - 讓 objection 模型的返回值符合 TS 介面
我正在使用 Express/Objection JS 和 TypeScript 實作一個 API。
我從這個倉庫獲得了很多靈感:https://github.com/HappyZombies/brackette-alpha/tree/master/server/src
就像創建者一樣,我也想為同一個「元件」(例如:使用者)擁有不同的介面。
我們可以看到他這裡創建了不同的介面(這裡),並且他在他的服務中使用它們作為返回的 Promise(這裡),但沒有檢查他返回的是否符合他的介面。例如:要匹配他這裡承諾的介面,他將只選擇符合他介面的 SQL 欄位
public async findAll(): Promise<IUserMiminimum[]> {
let users;
try {
users = await this.usersModel.query().column('username', 'displayName');
} catch (err) {
this.logger.error(err);
throw err;
}
return users;
}我的問題是:
- 是否有一種方法可以根據介面描述僅選擇模型結果中你想要的欄位?
- 否則,有沒有方法檢查介面是否符合模型結果?
感謝閱讀。
答案#1
反對 castTo() 可能有助於這個
const users= await User.query()
.column('username', 'displayName')
.castTo<IUser[]>();
