2017-02-28 34 views
-3

有時候,我的控制檯的NodeJS是給我這些錯誤,但我不太明白他們: ImageNodeJS有時會表現怪異! (錯誤)

它喜歡很少發生,它並不總是發生。大多數時候它運行得很好,但有時它只是返回上面提供的錯誤。我有點失落了。

代碼(如果我認爲發生錯誤):

if(canPlayersBet == '1') { 
    if((usersCr[user.steamid] !== undefined) && (usersCr[user.steamid] == CRbr)) { 
     socket.emit('message', { 
      type: 'error', 
      enable: true, 
      error: 'You have already joined the crash.' 
     }); 
     return; 
    } 
    if((m.amount < minbet) || (m.amount > maxbet)) { 
     socket.emit('message', { 
      type: 'error', 
      enable: true, 
      error: 'Invalid bet amount ['+minbet/1000+'-'+maxbet/1000+'].' 
     }); 
     return; 
    } 
    if(/(a|b|c|d|e|f|g|h|j|i|k|l|m|n|o|p|q|r|s|t|v|u|w|x|y|z)/.exec(m.amount)) { 
     socket.emit('message', { 
      type: 'error', 
      enable: true, 
      error: 'Invalid bet amount.' 

     }); 
     return; 
    } 
    if(crashState != 'STARTING' && usersCr[user.steamid] != CRbr) { 
     socket.emit('message', { 
      type: 'error', 
      enable: true, 
      error: 'The game have been already started!' 
     }); 
     return; 
    } 

    var start_time = new Date(); 
     query('SELECT `balance` FROM `users` WHERE `steamid` = '+pool.escape(user.steamid), function(err, row) { 
      if((err) || (!row.length)) { 
       logger.error('Failed to find DB'); 
       logger.debug(err); 
       socket.emit('message', { 
        type: 'error', 
        enable: true, 
        error: 'You are not DB' 
       }); 
       return; 
      } 
      if(row[0].balance >= m.amount) {   
       query('UPDATE `users` SET `balance` = `balance` - '+parseInt(m.amount)+' WHERE `steamid` = '+pool.escape(user.steamid), function(err2, row2) { 
        if(err2) { 
         logger.error('Error in withdraw'); 
         logger.debug(err); 
         socket.emit('message', { 
          type: 'error', 
          enable: true, 
          error: 'You dont have enough points' 
         }); 
         return; 
        } 
        query('INSERT INTO `crbets` SET `user` = '+pool.escape(user.steamid)+', `amount` = '+pool.escape(m.amount)+', `autoCashout` = '+pool.escape(m.autoCash), function(err3, row3) { 
         if(err3) { 
          logger.error('Error in DB'); 
          logger.debug(err); 
          return; 
         } 
         var end = new Date(); 
         if(usersCr[user.steamid] === undefined) { 
          usersCr[user.steamid] = 1; 
         } 
         if(CRusersAmount[user.steamid] === undefined) { 
          CRusersAmount[user.steamid] = { 
           'amount': m.amount, 
           'autoCashout': m.autoCash 
          }; 
         } 
         CRusersAmount[user.steamid]['amount'] += parseInt(m.amount); 
         socket.emit('message', { 
          type: 'crbetconfirm', 
          bet: { 
           betid: row3.insertId, 
           amount: m.amount, 
           autoCashout: m.autoCash 
          }, 
          balance: row[0].balance-m.amount, 
          mybr: usersCr[user.steamid], 
          br: CRbr, 
          exec: (end.getTime()-start_time.getTime()).toFixed(3) 
         }); 
         users[user.steamid].balance = row[0].balance-m.amount; 
         io.sockets.emit('message', { 
          type: 'crbet', 
          bet: { 
           amount: m.amount, 
           autoCashout: m.autoCash, 
           betid: row3.insertId, 
           icon: user.avatar, 
           name: user.name, 
           user: user.steamid 
          } 
         }); 
         CRcurrentBets.push({ 
          autoCashout: m.autoCash, 
          amount: m.amount, 
          betid: row3.insertId, 
          icon: user.avatar, 
          name: user.name, 
          user: user.steamid, 
          won: '0' 
         }); 
         socket.emit('message', { 
          type: 'setIsPlaying' 
         }); 
         totalBet = totalBet+m.amount; 
         logger.debug('CRBet confirmed #'+row3.insertId+' | Amount: '+m.amount+' | AutoCashout: '+m.autoCash+' | User: '+pool.escape(user.steamid)); 
         checkTimer(); 
        }) 
       }); 
      } else { 
       socket.emit('message', { 
        type: 'error', 
        enable: true, 
        error: 'Error: You dont have any money.' 
       }); 
      } 
     }); 
}else { 
    socket.emit('message', { 
     type: 'error', 
     enable: true, 
     error: 'Error: You cannot bet, because the bet is offline.' 
    }); 
} 
+0

'1166'是什麼? –

+0

對不起,我遲到的反應,這是\t \t \t \t \t \t \t \t用戶:user.steamid –

+0

有2條線的樣本中有。另外,這兩行都沒有引用「balance」。所以這聽起來不對。 –

回答

0

我的猜測是以下行有過錯

users[user.steamid].balance = row[0].balance-m.amount; 

如。​​是undefined

+0

插入一個用戶==未定義,並返回如果是的話會做這項工作? –

+0

或者只是根據該條件執行該行。但是,平衡的退出當然是有原因的,並且「用戶」中沒有進入的根本原因(如果這確實是問題)必須進行分析。 – imhotap