2017-04-11 63 views
5

我正在運行支持異步/等待的節點7.6.0。節點postgres客戶端池支持異步/等待,並有一個很好的例子here。但是,node-postgres(here)中事務的示例使用回調代替async/await。儘管這個例子,我想我會嘗試用異步交易/在等待一個快速測試:node-postgres與回調或異步/等待交易?

let client = null; 

try { 
    client = await this.pool.connect(); 
} catch (error) { 
    console.log('A client pool error occurred:', error); 
    return error; 
} 

try { 
    await client.query('BEGIN'); 
    await client.query('UPDATE foo SET bar = 1'); 
    await client.query('UPDATE bar SET foo = 2'); 
    await client.query('COMMIT'); 
} catch (error) { 
    try { 
     await client.query('ROLLBACK'); 
    } catch (rollbackError) { 
     console.log('A rollback error occurred:', rollbackError); 
    } 
    console.log('An error occurred:', error); 
    return error; 
} finally { 
    client.release(); 
} 

return 'Success!'; 

這似乎是工作得很好,但I was told由節點Postgres的貢獻,這是一個壞主意。不幸的是,他沒有花時間解釋爲什麼這是一個糟糕的主意 - 他只是說要在Stack Overflow上尋找答案。

爲什麼在node-postgres中使用async/await而不是回調執行事務是個壞主意?

+1

如果移動邏輯創建交易成不同的功能,和維塔利-T只是想任何藉口,以促進他的圖書館這不是一個壞主意。忽略評論。 – Ryan

回答