代码之家  ›  专栏  ›  技术社区  ›  Carlo

为什么我需要在节点postgres中使用async/await两次

  •  0
  • Carlo  · 技术社区  · 7 年前

    数据库.js

    const {Pool} = require('pg');
    
    const pool = new Pool({
    connectionString: process.env.DATABASE_URL,
    });
    
    module.exports = {
    query: (text, params) => pool.query(text, params)
    };
    

    auth\u facade.js认证

    const database = require('../../utils/database');
    
    module.exports.findPersonByEmail = async function(email) {
    const query = 'SELECT * FROM Person WHERE email = $1';
    const values = [email];
    
    try {
        console.log(1);
        const {rows} = await database.query(query, values);
        console.log(2);
        return rows[0];
    } catch (err) {
        next(err);
    }
    };
    

    验证控制器.js

    const authFacade = require('./auth_facade');
    
    module.exports.signin = async function(req, res, next) {
    console.log(0);
    var person = await authFacade.findPersonByEmail(req.body.email);
    console.log(3);
    };
    

    正如我所料,它显示了0123。

    但是,我不明白为什么我需要 async/await 两边都有 auth_facade::findPersonByEmail auth_controller::signin

    验证控制器::登录 签名和签名 await auth_facade ?

    2 回复  |  直到 7 年前
        1
  •  4
  •   Amadan    7 年前

    您当前的代码:

    await :

    一家人去购物中心(0)爸爸累了,说“去买点东西吧,我会在这儿的。”(1)过了一会儿,女儿说“我不想进那家店,我就在这儿等你,然后我们再回到爸爸身边。”然而,差不多在同一时间,(3)爸爸转过身来,决定回家,因为等待的是失败者(2) 妈妈买完东西回到女儿身边,两人都回来发现爸爸开车走了,他们被困在商场里,手里拿着一堆购物袋。

    女儿和爸爸都需要等待,这样他们才不会丢下一个人。

        2
  •  0
  •   Rafael    7 年前

    你需要的理由 await AuthFacade AuthController 是因为你在处理 两个不同的

    1. findPersonByEmail() (来自数据库查询)
    2. findPersonByEmail() .

    findPersonByEmail(email: string): Promise<Person>;
    
    //same difference
    let person = await authFacade.findPersonByEmail(req.body.email);
    
    //same difference
    authFacade.findPersonByEmail(req.body.email).then(person => {
    });
    

    如果您想了解更多信息,请阅读: Up and Running with Asynchronous JavaScript

    推荐文章