1
我試圖使用Knex與異步/等待,因爲Knex有一個Promise接口。我的代碼如下。如何使用knex與async/await?
const db = makeKnex({
client: 'mysql',
connection: {
host: process.env.MYSQL_HOST,
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE,
},
pool: { min: 0, max: 100 },
});
async function getUsers() {
return await db.select()
.from('users')
.limit(10);
}
const res = getUsers();
console.log('KNEX', res);
我希望得到我的查詢中的行後面,但輸出
KNEX Promise {
_c: [],
_a: undefined,
_s: 0,
_d: false,
_v: undefined,
_h: 0,
_n: false }
我嘗試了這一點,它的工作,但我對於它爲什麼會感到困惑。在我原來的代碼中,'getUsers'是一個異步函數,它爲什麼不能在原始函數中工作? – ABC
它也可以工作,但是如果沒有'await',代碼就不會等待承諾結果並執行下一行(console.log ..)。因爲這個'res'變量將被設置爲一個'未決'狀態的'Promise'實例。使用'await'關鍵字將確保promise的'resolve'或'reject'回調被調用。 –