我正在爲Discord製作一個bot,並且此bot中的一個功能是一個關卡系統。我決定從使用JSON來存儲數據到sqlite。我在node.js中使用了sqlite3,並試圖創建一個函數來創建/檢索玩家的數據。我的目標是讓這個函數從查詢中返回數據,但是我正在將自己的頭腦投入到一堵磚牆上,試圖弄清楚我做錯了什麼。我已經讀過,我需要使用發送到查詢函數的回調函數,但是這對我來說也不起作用(它也不適用於此函數的目標)。從node.js中的SQLite3查詢返回數據的函數
因此,我如何創建一個函數從查詢中返回數據的任何幫助將非常有幫助!這是我放棄之前的代碼,並決定在我失去更多頭髮之前來這裏尋求幫助。其他的工作正如我打算的那樣,我只是無法從db.each()中檢索數據。
exports.getPlayerData = function(players,msg,mention = false){
if(mention){
// console.log("mention found");
var member = msg.mentions.users.first();
} else {
var member = msg.member.user;
};
var db = new sqlite3.Database('data/levels/' + msg.guild.id + '.db');
var check;
db.serialize(function() {
var stmt = "CREATE TABLE if not exists uid_" + member.id + " (id INTEGER PRIMARY KEY, username TEXT, avatarID TEXT, avatarURL TEXT, xp INTEGER, level INTEGER, lastXp INTEGER)";
db.run(stmt);
db.run("INSERT OR IGNORE INTO uid_" + member.id + " (id,username,avatarURL,xp,level,lastXP) VALUES (?,?,?,?,?,?)", member.id,member.username, member.avatarURL , 0, 0, 0);
db.each("SELECT * FROM uid_" + member.id + " WHERE id = " + member.id , function(err, row) {
console.log(row);
return row;
});
});
// return row;
db.close();
}
我試過的東西類似於此,不幸的是,仍然得不到這個。不完全確定交易是在這裏。似乎這應該更容易做...也許我應該看看不同於sqlite3的模塊? – AndyRob7
我試過並在代碼上面運行。它運行良好。它沒有返回undefined。 –
執行以下操作: var player = this.getPlayerData(players,msg,false); console.log(player); 給我未定義。不知道我在這裏錯過了什麼。 – AndyRob7