/ Node JS

Cómo conectar una base de datos SQLite con Node.js sin frameworks

En este tutorial vamos a ver cómo conectarse a una base de datos SQLite, obtener algunos datos de una tabla y mostrarlos en la consola. Nos vamos a quedar solo con Node.js sin ningún framework extravagante, así que si estás buscando aprender los conceptos básicos de cómo trabajar con bases de datos en Node.js, este tutorial es perfecto para ti.

En primer lugar, necesitamos instalar la librería sqlite3.

npm install sqlite3

Echa un vistazo a este ejemplo de código sobre cómo conectarse a tu base de datos SQLite y obtener los últimos posts. Creamos index.js con ese contenido:

const sqlite3 = require('sqlite3').verbose();

// Abre la base de datos
const db = new sqlite3.Database('ruta/a/la/base/de/datos.db');

// Obtiene los últimos 5 posts de la tabla "posts"
db.all('SELECT * FROM posts ORDER BY created_at DESC LIMIT 5', (err, rows) => {
  if (err) {
    console.error(err.message);
  } else {
    console.log(rows);
  }
});

// Cierra la conexión de la base de datos cuando hayas terminado
db.close();

Si quieres usarlo como una API, te tengo una buena noticia: ¡lo mejoramos! Ahora tiene un servidor web y una ruta /posts. Solo no te olvides de correr el comando node index.js para levantar el servidor. Luego, para ver el resultado, entra en tu navegador y ve al link 127.0.0.1:3000/posts

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

const PORT = 3000;

const server = http.createServer((req, res) => {
  // Check if the requested URL is /posts
  if (req.url === '/posts') {
    // Open the database
    const db = new sqlite3.Database('path/to/database.db');
    
    // Retrieve the last 5 posts from the "posts" table
    db.all('SELECT * FROM posts ORDER BY created_at DESC LIMIT 5', (err, rows) => {
      if (err) {
        console.error(err.message);
        res.statusCode = 500;
        res.end();
      } else {
        // Return the results as JSON
        res.setHeader('Content-Type', 'application/json');
        res.end(JSON.stringify(rows));
      }
      
      // Close the database connection
      db.close();
    });
  } else {
    // Handle other requests here
    res.statusCode = 404;
    res.end();
  }
});

server.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});

En este ejemplo, empezamos importando el módulo sqlite3 y creando una nueva instancia de la clase Database, con la ruta a nuestro archivo de base de datos SQLite. Luego, usamos el método all() para obtener los últimos 5 posts de la tabla "posts", ordenándolos por la columna "created_at" en orden descendente. Los resultados se devuelven en el arreglo rows. Finalmente, cerramos la conexión de la base de datos usando el método close().

Solo ten en cuenta que este ejemplo asume que ya tienes una base de datos SQLite con una tabla "posts" que tiene una columna "created_at". Si tu esquema de tabla es diferente, es posible que debas ajustar la consulta SQL para que se adapte a tus necesidades.