Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

177
Vistas
How do I make the rows returned by a sqlite query through node.js available to a js frontend script?

I'm trying to create a simple web page to display the contents of a table stored in a sqlite3 table. I'm using vanilla js for the frontend (NO JQUERY!) and node.js + sqlite3 for the backend. I can query the database just fine within my node script but can't figure out how to return the results to my frontend js script. The problem seems to be that since the queries are asynchronous, the function ( get_rows() ) returns before the queries are complete. Code below.

main.js (frontend script used by web page)

    xmlhttp.open("POST", "http://localhost:3000/load", true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            console.log(xmlhttp.responseText);
            let rows = JSON.parse(xmlhttp.responseText);
            console.log(rows);
            //now we can parse rows and create table
            console.log("rows: " + rows);
        }
    }
    xmlhttp.setRequestHeader("Content-Type", "text/plain", "Access-Control-Allow-Origin", "*");
    xmlhttp.send(tbl_name); 

access.js (node.js script handling sqlite3 query)

const http = require('http');
const url = require('url');
const sqlite = require('sqlite3').verbose();


 get_rows = function(table) {
    let test = null;

    //open database
    let db = new sqlite.Database("../../databases/test_db.db", err=> {
        if (err) {
            console.error(err.message);
        }
        console.log("Opened database from disk");
    });

    //get rows
    db.all('SELECT * FROM ' + table, (err, row) => {
        if (err) {
            console.error(err.essage);
        }
        test = row;
    });
    //close database
    db.close((err) => {
        if (err) {
            console.error(err.message);
        }
        console.log("Closed database");
    });

    return test;
}

http.createServer(function (req, res) {
    let path = url.parse(req.url).pathname;
    res.writeHead(200, {"Content-type": "text/plain", 'Access-Control-Allow-Origin' : '*'});

    if (path === "/load") {
        req.on("data", function(tbl_name) {
            console.log("Loaded table: " + tbl_name);
            res.end(get_rows(tbl_name));
       });
    }
}).listen(3000);
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda