Insérer une donnée d'une BDD dans un objet
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:
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:
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:
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 :lol:
J'espère que je n'ai rien oublié pour les infos et que quelqu'un pourra m'aider.