connexion à une base sqlite
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:
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:
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:
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