【问题标题】:NodeJS sqlite3 SELECT query cachedNodeJS sqlite3 SELECT查询缓存
【发布时间】:2020-01-08 15:27:50
【问题描述】:

我正在使用 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) => {
...

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

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

任何提示我可能做错了什么?

提前致谢

【问题讨论】:

  • 您能否显示db.all(SELECT * FROMpromotedGames WHERE gameID = ${row.id}, (err, promotedGamesResults) => { ... 的完整代码?

标签: node.js sqlite node-sqlite3


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    ...

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

    【讨论】:

      猜你喜欢
      • 2017-04-25
      • 2021-07-13
      • 2014-03-29
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      • 2011-03-13
      • 2011-12-10
      相关资源
      最近更新 更多