【问题标题】:Insert an array of cards inside a mySQL table, no error to console在 mySQL 表中插入一组卡片,控制台没有错误
【发布时间】:2019-07-23 23:50:20
【问题描述】:

我希望我不是在问一个已经被问过的问题。我已经尝试四处寻找有关如何执行我正在尝试的操作的一些好的步骤,这是我从这些搜索中获得的最佳结果。

这需要对我的想法做出一些解释。

所以,我正在为我的不和谐服务器制作纸牌游戏。我正在使用“卡片组”([https://www.npmjs.com/package/card-deck])来处理卡片。我已经将许多卡片保存到同一个数据库的另一个表中(所以我没有使用卡片构造函数)。这种纸牌游戏有多个牌堆,这些牌从主牌堆出来后会被移入和移出;手牌、弃牌堆、主牌堆、能量堆、激活牌等等……我的逻辑是先加载主牌堆,然后让玩家从牌堆中拉出牌到手上、能量堆、弃牌堆等...通过命令。

我创建了一个数据库,为每个玩家的每个牌堆(deckAcards、deckBcards、handA、handB 等)创建了一个不同的列。我保存了一个包含少量牌的测试牌组。我可以毫无问题地检索该牌组(保存在数据库中的不同表中)。但是,当我尝试将所述数组保存到表的正确列中时,我被卡住了。我什至不确定这是如何设置此类项目的。

这是我的代码,我尝试将从数据库的一个表中检索到的卡片数组插入到设置有该游戏所有信息的表中。从数据库中检索到的卡片结果数组在此处代码的最顶部保存为“arr_cardname”。

var loadeddeck = arr_cardname;

        if (message.author.id == playerAid) {

          message.channel.fetchMessages().then(messages => {
          const botMessages = messages.filter(message => message.author.bot);
          var brawlID = botMessages.last().content.slice(-8)
          var brawlname = `brawlID${brawlID}`

            var maindeckA = new Deck(loadeddeck)

            var playerAdeck = JSON.stringify(arr_cardname)

            console.log(playerAdeck)

            sql = `INSERT INTO ${brawlname} (deckAname, deckAcards) VALUES ("${deckname}", "${playerAdeck}")`;
            con.query(sql, function(err, rows, fields) {
                if (err) throw err; 
                else {
                    message.channel.send(`${deckname} and play areas loaded for Player A!`)
            }
            })
        })

          //----------------------------------------------------------------------------------------
          } else if (message.author.id == playerBid) {
         //Make a copy of the above block for Player B

当我运行上面的代码时,我没有在控制台打印任何错误,并且没有任何内容输入到我指定的表中。

我的另一个顾虑是,这张桌子上的牌组不允许我使用由“card-deck”制成的牌组对象。主要是,我只是希望能够存储、访问、修改卡片的布局,并在游戏进行时将它们从不同的牌堆中移动。 (抽一张牌将牌堆中的最上面的牌移到手上,丢弃一张牌将一张牌从手牌移到弃牌堆,等等)我最初尝试使用 JSON 文件,但我读过它很容易弄乱或损坏如果经常访问和修改,所以我不想冒险,而是使用数据库。

任何关于我应该如何进行这项工作的建议、更正或建议都将非常棒和感激,因为我已经旋转了好几天了!谢谢!

【问题讨论】:

    标签: mysql node.js discord.js


    【解决方案1】:

    您没有正确处理错误:

    ...
    sql = `INSERT INTO ${brawlname} (deckAname, deckAcards) VALUES ("${deckname}", "${playerAdeck}")`;
    con.query(sql, function(err, rows, fields) {
        if (err) throw err; 
        else {
            con.query(sql)
            message.channel.send(`${deckname} and play areas loaded for Player A!`)
        }
    }
    
    

    【讨论】:

    • 谢谢!编辑了我上面的代码。虽然运行它时我仍然没有看到任何错误。它一直运行到 sql = 区域,然后似乎忽略了其余部分。
    • 你为什么要运行两次相同的 sql 查询?
    • 我……不确定。 XD必须是一些尝试修复它的结果。当我删除它时,由于某种原因仍然没有错误。我很困惑为什么现在甚至没有运行。感谢您迄今为止的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多