我有一个名为“得分”的表,想要过滤UserId并按其点排序。我想为我的Discord Bot创建一个ranklist命令,但我不知道该怎么做。
我虽然是这样的,但它不起作用:
const sql = require("sqlite");
sql.open("score.sqlite");
exports.run = (client, message, args) => {
var index = 1;
var msg = "-- Top 5 list --\n";
sql.get("SELECT * FROM scores ORDER BY points DESC LIMIT 5").then(rows => {
for (index = 1; index < 6; index++) {
if (rows[index] !== null) {
msg += index + ". " + rows[index].userId + " - " + rows[index].points + "\n";
}
}
console.log(msg);
});
};
你能帮帮我吗?
感谢。
答案 0 :(得分:1)
https://github.com/mapbox/node-sqlite3/wiki/API#databasegetsql-param--callback
回调的签名是函数(错误,行){}。如果结果 set为空,第二个参数未定义,否则为 包含 第一行 的值的对象。
sql.get只返回单个行对象(不是 行 行 对象的数组)。您需要使用sql.each或sql.all。
sql.all https://github.com/mapbox/node-sqlite3/wiki/API#databaseallsql-param--callback
sql.each https://github.com/mapbox/node-sqlite3/wiki/API#databaseeachsql-param--callback-complete
编辑:看起来你正试图制作一个不和谐点系统机器人。这里有一个非常好的指南。 https://anidiotsguide.gitbooks.io/discord-js-bot-guide/coding-guides/storing-data-in-an-sqlite-file.html