0

我正在使用 NodeJS 创建一个不和谐机器人 (DiscordJS) 并使用 sqlite3 来存储 2 组数据。

我打开数据库:

 let db = new sqlite3.Database('./db/games.db', (err) => {
        if (err) {
            console.error(err.message);
            return;
        }
        ...
}

稍后,我将某条消息存储在一个名为promotionGames 的表中(id INCREMENTAL,服务器INT,频道INT,messageID INT)

当我查询数据库时

db.all(`SELECT * FROM promotedGames WHERE gameID = ${row.id}`, (err, promotedGamesResults) => {
...

它总是返回第一个存储的游戏,我不知道为什么会发生这种情况。

到目前为止采取的步骤: - 重新启动 Node 应用程序 - 删除 sqlite3 数据库并重做 - 删除 node_modules 文件夹并重新安装所有包

任何暗示我做错了什么?

提前致谢

4

2 回答 2

0

您尝试使用 row.Id 搜索您的 gameID,sqlite 中的行 id 是您在表中插入的行的内置计数器它不是列 gameID 。

于 2020-01-10T19:58:12.270 回答
0

我认为您打算返回与它匹配的记录${row.id} 它运行作为参数传递的查询,并且对于来自数据库的每个结果,它将运行回调。因此,当您打算从数据库中检索某些项目时,最好使用 db.each()。

db.each(`SELECT * FROM promotedGames WHERE gameID = ${row.id}`, (err, promotedGamesResults) => {

...

PS:db.each当您需要返回所有行并处理选定的返回数据集时使用。

于 2020-01-13T06:18:29.043 回答