【问题标题】:How to access properties of a Promise<Object> in JavaScript (using TypeORM) for DB Querying如何在 JavaScript(使用 TypeORM)中访问 Promise<Object> 的属性以进行数据库查询
【发布时间】:2021-05-08 18:20:40
【问题描述】:

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

因此,如果我可以直接从方法中读取这些属性,那也很酷。

我希望一切都清楚,如果您需要有关该问题的更多信息,我很乐意提供帮助! :)

【问题讨论】:

    标签: javascript postgresql properties es6-promise typeorm


    【解决方案1】:

    您可以将您的函数转换为 async 并等待直到 Promise&lt;User&gt; 解析:

    @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;
    }
    

    【讨论】:

    • 谢谢! :D 现在我在访问属性时遇到了问题,我有一个 pwd 属性,我想与参数中的给定 pwd 进行比较。当我比较两个字符串时,它返回 false,但两个字符串是相同的。你知道会发生什么吗?如果你没有,np 只是想尝试解决这个问题,呵呵。非常感谢您这么快回答:D
    • 你用来比较的代码是什么?你能把它放在这里作为评论吗?
    • 当然我可以 n.n @Get(':username/:pwd') authUser(@Param('username') username: string, @Param('pwd') pwd: string): boolean {让匹配:布尔=假; this.userAuthService.asyncFindOneUser(username) .then((value) => { const user: User = value; console.log(user.password); console.log(pwd); if(user.password.localeCompare(pwd) ) { 匹配 = true; } });控制台.log(匹配);返回匹配; }
    • 顺便说一句,我将我在服务上使用的函数转换为异步 bc 这是我的控制器,我只希望它处理简单的逻辑事情
    • 比较部分可以直接使用if(user.password === pwd)。试试这是否适合你
    猜你喜欢
    • 2022-06-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 2018-04-21
    • 2017-07-07
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多