簡體   English   中英

如果數據庫中有1個節點,node.js和mysql如何得到2個?

[英]node.js and mysql how do I get 2 if have 1 in the database?

我想向數據庫中添加+1,如果我有1,我將在數據庫中有2,我嘗試過但得到11,而不是2

if (result4.length) {
  var sql1 = `UPDATE level SET xp = '${result4[0].xp + 1}' WHERE xp = '${result4[0].xp}'`;

  connection.query(sql1, function(err, result) {
    if (err) throw err;
  });
}

這是完整的源代碼,以防萬一:

client.on("message", message => {
  if (message.author.bot) return;
  connection.query(`SELECT * FROM guildn WHERE id = '${message.guild.id}'`, function(err, result3) {
    if (err) {
      return console.log('Error1');
    }
    if (result3.length) {
      connection.query(`SELECT * FROM level WHERE id = '${message.author.id}'`, function(err, result4) {
        if (err) {
          return console.log('Error1');
        }
        if (!result4.length) {
          var sql = `INSERT INTO level (guild , id , nivel , xp) VALUES ('${message.guild.id}','${message.author.id}','0','1')`;
          connection.query(sql, function(err, result) {
            if (err) throw err;
            console.log("1 record inserted");
            return
          });
        }
        if (result4.length) {
          var sql1 = `UPDATE level SET xp = '${result4[0].xp + 1}' WHERE xp = '${result4[0].xp}'`;

          connection.query(sql1, function(err, result) {
            if (err) throw err;
          });
        }
      });
    }
  });
});

我曾用Google翻譯器發表這篇文章,所以如果翻譯中有任何錯誤,對不起

我懷疑是數據庫xp的結果是一個字符串。 這似乎合乎邏輯,因為您在查詢中將其設置為字符串。 在這種情況下,您可以這樣做:

`UPDATE level SET xp = '${parseInt(result4[0].xp) + 1}' WHERE xp = '${result4[0].xp}'`;

這會將結果轉換為數字,而javascript會將數字加1,而不是將1連接到字符串。

我猜發生了什么事,您的XP數據以字符串形式存儲在數據庫中,因此您最終嘗試在字符串中添加數字。 在Javascript中,這種情況的結果是將數字連接到字符串的末尾,這就是為什么以'11'而不是2結尾的原因。

要在不更改數據庫的情況下解決此問題,可以在添加1之前使用parseInt將XP字符串轉換為整數:

        var sql1 = `UPDATE level SET xp = '${ parseInt (result4[0].xp) + 1}' WHERE xp = '${result4[0].xp}'`;

如果xp的數據類型是字符串,那么對您的更新調用進行一些修改就足夠了:

if (result4.length) {
  const query = `UPDATE level SET xp = '${Number(result4[0].xp) + 1}' WHERE xp = '${result4[0].xp}'`;

  connection.query(query, function(err, result) {
    if (err) throw err;
  });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM