如何在 JavaScript使用 TypeORM中访问 Promise<Object> 的属性以进行数据库查询

问题描述

我正在使用 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;
}