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

176
Visualizações
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 à 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