Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

355
Visualizações
javascript - await doesn't wait

I am using Knex to do a simple select query from the database. I have returned a value in then function and added await before the async call. But await doesn't wait and always keep running next line with undefined value.

This is User model file with the console.log for the query result, this always get print last:

import knex from '../db/db.config.js';

const User = {};

User.findByNameAndPassword = (username, password) => {
  knex('user')
    .where({ name: username })
    .where({ password: password })
    .then(rows => {
      console.log(rows);
      return rows;
    })
    .catch((error) => {
      console.log(error);
    }) 
}

export default User;

and this is the controller, the console.log here is always printed first:

import User from '../models/user.js';

export const login = async (req, res) => {
  let name = req.body.name;
  let password = req.body.password;

  let user = await User.findByNameAndPassword(name, password)
    
  console.log('user', user);
}
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

In order for await to work, you need to use it on a function that returns a promise, or a promise itself.

To do so in this instance, put return before knex('user') in your User.findByNameAndPassword function.

over 4 years ago · Santiago Trujillo Relatório

0

Well, according to the code shared by you, it seems that findByNameAndPassword is a Synchronous Function. So awaiting will not help in controller. You might want to update your findByNameAndPassword to an Async one. Like this

import knex from '../db/db.config.js';

const User = {};

User.findByNameAndPassword = async (username, password) => {
    try {
        const rows = knex('user')
            .where({ name: username })
            .where({ password: password });
        console.log(rows);
        return rows;
    catch(err) {
        console.log(err);
    } 
}

export default User;

That should do it. What we are doing in this code is, we are trying to get the rows in the try block. And if it FAILS, the catch block will register an error and log the error for us.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda