Bonjour, bonsoir

Je planche sur un problème depuis quelques jours maintenant et j'aimerais avoir l'avis de gens plus compétent que moi. Étant nouveaux avec Typescript, je n'arrive pas à insérer une donnée venant d'une base de donnée (SQLITE3) dans un objet Typescript. Je cherche simplement un faire un CRUD, mon Create fonctionne comme il faut mais le Read me pose problème. Je vous met le code de ma classe avec mes 2 méthodes:

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
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('RPG.db');
 
import Personnage from "./personnage"
 
export default class DaoPersonnage {
 
    create(obj: Personnage) {
        var p = new Personnage.prototype.persoObj(obj);
        db.serialize(function() { 
            var stmt = db.prepare("INSERT INTO joueurs VALUES (?, ?, ?)");
            stmt.run(p.id, p.pseudo, p.lvl);
            stmt.finalize();
        });
    }
 
    read(myID: number) {
 
        var p= new Personnage();
        db.serialize(() => { 
            db.each("SELECT rowid AS id, pseudo, level FROM joueurs WHERE id=" + myID, function(err,row){ 
                if (err === null) {
                    p.id = row.id;
                    p.pseudo = row.pseudo;
                    p.lvl = row.level;
                    p.toString(); // affiche mes 3 variables correctement
                    console.log("row.id = " + p.id);  // affiche l'id du personnage
                    console.log("row.pseudo = " + p.pseudo); // affiche le pseudo du personnage
                    console.log("row.level = " + p.lvl); // affiche le level du personnage
                    console.log("Test 1");
                }
                else console.log(err);
            });
        });
    p.toString(); // affiche undefined pour chaque variables
    return p;
    }
et je vous donne également ma classe Personnage:
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
export default class Personnage {
 
    id: number;
    pseudo: string;
    lvl: number;
 
    constructor() {
    }
 
    public perso(id: number, pseudo: string, lvl: number){
        this.id = id;
        this.pseudo = pseudo;
        this.lvl = lvl;
    }
 
    public persoObj(p:Personnage) {
        this.id = p.id;
        this.pseudo = p.pseudo;
        this.lvl = p.lvl;
    }
 
    public toString()
    {
        console.log("toString: ID="+this.id+" pseudo="+this.pseudo+" lvl="+this.lvl);
    }
Voilà et du coup j'aimerai que quand je fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
var dao = new DaoPersonnage();
      var read = dao.read(msg.author.id); // "msg.author.id" est une commande de l'API Discord.js
      console.log("read = " + read.id); //affiche undefined
cela m'affiche l'id du personnage et non undefined
J'espère que je n'ai rien oublié pour les infos et que quelqu'un pourra m'aider.