Bonjour,

J'essaie de créer un backend avec une connexion à une base de données sqlite
J'ai installé le package sqlite3.

D'un côté, j'ai un fichier db.js :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import {open} from "sqlite";
import sqlite3 from "sqlite3";
 
let dbInstance = null;
 
export async function initDB() {
  dbInstance = await open({
    filename: "./db/database.sqlite",
    driver: sqlite3.Database,
  })
 
  await dbInstance.exec(`
          CREATE TABLE IF NOT EXISTS users (
            id        INTEGER   PRIMARY KEY AUTOINCREMENT,
            name      TEXT      NOT NULL,
            createdAt DATETIME  NOT NULL  DEFAULT CURRENT_TIMESTAMP
          )
    `)
 
  return dbInstance
  //console.log(dbInstance)
}
 
export function getDB() {
  if (!dbInstance) {
    throw new Error ("InitDB must be called before getDB");
  }
  return dbInstance
}
et j'ai au même niveau un fichier index.js :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import {getDB, initDB} from "./db.js";
 
import express from "express";
//const express = require('express')
 
 
 
const app = express()
const port = 3001
 
app.use(express.json())
 
app.use(function (req, res, next) {
  res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
  res.setHeader('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE,OPTIONS');
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Access-Control-Allow-Headers');
  next();
});
 
app.get("/users", async (req, res) => {
 
  const db = getDB();
  console.log(db)
 
  const users = await db.all(
    "SELECT * FROM users"
  );
  console.log(users)
 
  return res.json(users);
 
});
 
app.get('/', (req, res) => {
  res.status(200).send('Hello World!');
})
 
app.listen(port, () => {
  console.log(`App running on port ${port}.`)
})
résultat : ma requête me renvoie un tableau vide :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Database {
  config: { filename: './db/database.sqlite', driver: [Function: Database] },
  db: Database {}
}
[]
Pourtant j'ai bien des données dans ma table users
Qu'est ce qui cloche ?


Merci,
Nico