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

370
Visualizações
javascript - esperar no esperar

Estoy usando Knex para hacer una consulta de selección simple de la base de datos. Devolví un valor en la función y agregué esperar antes de la llamada asíncrona. Pero await no espera y siempre sigue ejecutando la siguiente línea con un valor indefinido.

Este es el archivo de modelo de usuario con console.log para el resultado de la consulta, esto siempre se imprime en último lugar:

 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;

y este es el controlador, el archivo console.log aquí siempre se imprime primero:

 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

Para que await funcione, debe usarlo en una función que devuelva una promesa, o una promesa en sí misma.

Para hacerlo en este caso, coloque return antes knex('user') en su función User.findByNameAndPassword .

over 4 years ago · Santiago Trujillo Relatório

0

Bueno, según el código compartido por usted, parece que findByNameAndPassword es una función síncrona. Entonces, esperar no ayudará en el controlador. Es posible que desee actualizar su findByNameAndPassword a uno asíncrono. Como esto

 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;

Deberias hacer eso. Lo que estamos haciendo en este código es intentar obtener las rows en el bloque de prueba. Y si FALLA, el bloque catch registrará un error y registrará el error por nosotros.

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