Knex: Comment utiliser knex avec async/wait ?

Créé le 10 déc. 2016  ·  3Commentaires  ·  Source: knex/knex

J'essaie d'utiliser Knex avec async/wait puisque Knex a une interface Promise. Mon code est ci-dessous.

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);

Je m'attendais à récupérer les lignes de ma requête, mais la sortie est

KNEX Promise {
_c: [],
_a: undefined,
_s: 0,
_d: false,
_v: undefined,
_h: 0,
_n: false }

Commentaire le plus utile

Ce n'est pas lié à knex, mais juste des trucs généraux sur async/attend et les promesses. Fermeture...

Tous les 3 commentaires

vous devriez probablement envelopper

const res = getUsers();
console.log('KNEX', res);

dans la fonction async et placez await avant getUsers();

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

pensez aussi à try/catch pour la gestion des erreurs (bulle)

Hum ça marche

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

Ce n'est pas lié à knex, mais juste des trucs généraux sur async/attend et les promesses. Fermeture...

Cette page vous a été utile?
0 / 5 - 0 notes