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 语句:在要插入的字段中未指定主键时,插入键更新未按预期工作
更新面板内动态添加的用户控件内部的Javascript函数未定义