簡體   English   中英

如何在異步/等待中使用knex?

[英]How to use knex with async/await?

我正在嘗試使用Knex和async / await,因為Knex有一個Promise接口。 我的代碼如下。

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 }

您應該在異步簽名函數中調用await。 這是我使用的模式。

(async function(){
  const res = await getUsers();
  console.log('KNEX', res);
})()

異步函數返回promises,因此你需要將getUsers返回的值視為promises,因此await它們或對它們使用.then()方法:

getUsers().then((res) => console.log(res))
const functionName = async() => {
  let result = await db.select().('users').limit(10);
  return result;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM