2017-02-28 156 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