问题描述
我正在使用 TypeORM 连接到 Postgres 数据库,而且我对 JavaScript 和 TypeORM 等真的很陌生。所以我想要做的我认为应该不难的事情是访问对象属性从 Postgres 返回它的值之后。
因此,当我在 TypeORM 中使用 findOne() 方法时,它返回我返回的对象的 Promise,即在以下示例中,我想从数据库中返回单个用户,以便我可以读取其属性并检查其密码与我搜索的用户名支持的用户名匹配。
@Get(':username/:pwd')
authUser(@Param('username') username: string,@Param('pwd') pwd: string): Promise<User> {
const userToAuth = this.userAuthService.findOneUser(username);
return userToAuth;
}
我的问题是:有没有办法将该 Promise 转换为 User 对象,以便我可以访问其属性(在本例中为 pwd),以便我可以进一步检查密码是否有效?或者有没有办法解决这个问题?直接访问承诺响应也是有效的,因为当我使用邮递员时,该方法返回的对象如下所示:
{
name: xxxx,email: xxxx,password: xxxx,...
}
我希望一切都清楚,如果您需要有关该问题的更多信息,我将很乐意为您提供帮助! :)
解决方法
您可以将您的函数转换为 async
并等待直到 Promise<User>
解析:
@Get(':username/:pwd')
async authUser(@Param('username') username: string,@Param('pwd') pwd: string): Promise<User> {
const userToAuth = await this.userAuthService.findOneUser(username);
// Here you can run your validation logics,or further access user object internal properties
/* your-code-here */
// Finally you can return the result
return userToAuth;
}