Soy un nuevo usuario de Nodejs y Javascript
tengo esta clase:
class Users { constructor() { this.all; this.selectAll(); } async selectAll() { await connection.connect(() => connection.query(`SELECT * FROM users`, (err, result) => { this.setData(result); }), ); } setData(res) { this.all = res; } }
Quiero obtener el resultado de los datos de la función de respuesta selectAll()
; por ejemplo:
var db = new Users(); console.log(db.all);
Esperaba que db.all
me diera el resultado de selectAll()
¿Hay alguna idea mejor?
Desea esperar esto. this.selectAll
ya que es una promesa. Por lo tanto, debe asegurarse de que devuelva una promesa. Puede hacer que el constructor sea asíncrono para esperar el selectAll
pero esto no se recomienda y probablemente no funcionará.
Personalmente, solo llamaría a db.selectAll
después de crear la instancia de usuarios.
Tal vez algo como esto:
Archivo: Users.js
export class Users { all = null async selectAll() { return connection.connect(() => connection.query(`SELECT * FROM users`, (err, result) => { this.setData(result); }) ); } setData(res) { this.all = res; } }
Archivo: index.js
(o en cualquier otro lugar)
import { Users } from './Users.js' // Somewhere else in your code in an async function: const anotherPlace = async () => { const db = new Users(); await db.selectAll(); console.log(db.all) }