SQL 数据库未更新 | JavaScript |不和谐机器人

Posted

技术标签:

【中文标题】SQL 数据库未更新 | JavaScript |不和谐机器人【英文标题】:SQL Database Not Updating | JavaScript | Discord Bot 【发布时间】:2019-05-23 07:31:17 【问题描述】:

更新:我认为问题在于我的数据库中的项目最初设置为 NULL,因此无法更改为 int。如果有人因为有同样的问题而绊倒了这个线程,请尝试将 NULL 更改为 0。

我正在使用 javascript、node.js 和 discord.js 制作一个 Discord 机器人,并且我正在使用 SQL 来实现一个经济系统和一个商店系统。经济系统运行良好,但我在商店系统的早期阶段遇到了一些麻烦。没有弹出任何实际错误,但是当我使用buy 命令时,它会发送一条消息,表明我购买了购买命令后所说的任何内容。然而,它实际上并没有更新数据库,当我用另一个命令检查我的库存中有什么时,它说在应该说新项目的地方没有任何价值。我检查了大小写等。如果有人知道为什么会这样,我将不胜感激。谢谢! (另外,我正在使用 sqlite。)

我的buy 命令的代码:

client.on("message", message => 
    const buy = (item) => 
        if (message.content.length > 5) 
            if (sql.get(`SELECT "$item" FROM "$message.guild.id" WHERE userId = "$message.member.id" AND "$item" IS NOT NULL`)) 
                sql.run(`UPDATE "$message.guild.id" SET "$item" = "$item" WHERE userId = "$message.member.id"`);
                message.channel.send(`$message.author, one $item was added to your inventory.`);
            
        
    
    const cart = (shopper) => 
        if (message.content.startsWith(prefix + "buy " + shopper)) buy(shopper);
    
    cart("Sullustan steak");
    cart("cape");
    cart("Roddy-Mobile");
    cart("fried Rodian");
    cart("pulse cannon");
);

【问题讨论】:

我建议您阅读 MongoDB (mongodb.com) 和 Mongoose (mongoosejs.com/docs)。 MongoDB 是一个与 NodeJS 完全集成的数据库软件,而 Mongoose 是一个以简单简洁的方式访问该数据库的库。 我已经有了数据库软件,我正在使用 sqlite 将 sql 插入到我的程序中。我会研究 Mongoose,但我不认为就是这样。 有效点,没想到那么远。不,Mongoose 只是 MongoDB 的一个接口,你不能用它来与 SQL 交互。 从安全的角度来看,这是一种不好的做法,我几乎可以肯定这很容易受到 sql 注入的影响,我建议清理您的输入,即“购物者”,并可能寻找一种访问方式没有直接字符串的数据库,使用存储过程是一种潜在的选择,我知道这不能直接解决您的问题,但我觉得值得注意。 从未使用过他的库——sql.tun 是否返回一个表示更新了多少行的整数?更新了 1 行吗?如果没有,实际上是否存在该用户 ID 存在的行?更新甚至运行了吗?仅当用户已经持有物品时才会触发更新?如果 item 最初为 null 怎么办? 【参考方案1】:

我认为问题在于我的数据库中的项目最初设置为 NULL,因此无法更改为 int。如果有人因为有同样的问题而绊倒了这个线程,请尝试将 NULL 更改为 0。

【讨论】:

以上是关于SQL 数据库未更新 | JavaScript |不和谐机器人的主要内容,如果未能解决你的问题,请参考以下文章

Sql 语句:在要插入的字段中未指定主键时,插入键更新未按预期工作

PL/SQL:根据条件更新另一个表时未找到数据

更新面板内动态添加的用户控件内部的Javascript函数未定义

与 SQL Server 的远程连接未更新数据

记录插入成功但数据库未更新 C# 和 SQL Server Compact 数据库

entitymanagerupdate数据未更新null