Ivory: NodeJs: TypeError, Cannot read property 'Player' of undefined

Beitrag lesen

Hallo zusammen

Ich bin hier auf ein komischer Problem gestossen und wollte einmal in die Runde fragen ob jemmand möglicherweise die Lösung kennt ;)

Funktionsbeschrieb:

Diese funktion wird jede Sekunde ausgelöst!
Diese Funktion generiert Buttons und sendet diese an alle Benutzer.
Um die Performence du verbessern sendet es diese nur Sobald eine Veränderung in der Datenbank auftritt.

Jetzt kauft man als Keufer im Auktionshaus einen Artikel funktioniert das alles auch wunderbar.
Nur nach unbestimmter Zeit taucht plötzlich dieser Error auf:

Konsolen Debug ausgaben:
spast Was ist der Fehler?
Funkey Was ist der Fehler?
Funkey Was ist der Fehler?
Funkey Was ist der Fehler?
Funkey Was ist der Fehler?
s Was ist der Fehler?
s Was ist der Fehler?
s Was ist der Fehler?
s Was ist der Fehler?
s Was ist der Fehler?
s Was ist der Fehler?
s Was ist der Fehler?
s Was ist der Fehler?
s Was ist der Fehler?

TypeError: Cannot read property 'Player' of undefined
    at Query._callback (D:\NodeJs\neu\server.js:2037:34)
    at Query.Sequence.end (D:\NodeJs\node_modules\mysql\lib\protocol\sequences\S
equence.js:78:24)
    at Query._handleFinalResultPacket (D:\NodeJs\node_modules\mysql\lib\protocol
\sequences\Query.js:143:8)
    at Query.EofPacket (D:\NodeJs\node_modules\mysql\lib\protocol\sequences\Quer
y.js:127:8)
    at Protocol._parsePacket (D:\NodeJs\node_modules\mysql\lib\protocol\Protocol
.js:213:24)
    at Parser.write (D:\NodeJs\node_modules\mysql\lib\protocol\Parser.js:62:12)
    at Protocol.write (D:\NodeJs\node_modules\mysql\lib\protocol\Protocol.js:37:
16)
    at Socket.<anonymous> (D:\NodeJs\node_modules\mysql\lib\Connection.js:75:28)

at Socket.EventEmitter.emit (events.js:95:17)
    at Socket.<anonymous> (_stream_readable.js:745:14)
    at Socket.EventEmitter.emit (events.js:92:17)

Dieser besagt das result[a].Player undefiniert sei. Bzw wird der Player als undefiniert angesehen obwohl dieser in der DatenBank vorhanden ist. Komischerweise tritt dieser Fehler erst nach einer unbestimmten Zeit ein.

Ich habe mir zusätzlich überlegt, dass wenn Player Undefiniert ist einfach nichts getan werden soll. Sobald aber der Player undefiniert ist crasht der Server...

Jetzt hoffe ich auf gute Ideen!

Grüsse Ivory

PS: delete vorhandeneSpieler; / vorhandeneSpieler = []; Same shit i now ;)

  
function updateWarenLager(){  
var connection = mysql.createConnection({  
    host: '**********************',  
    user: '**********************',  
    password: '******************',  
    database: '******************'  
});  
delete vorhandeneSpieler;  
vorhandeneSpieler = [];  
var query = connection.query(  
       // 'INSERT INTO PlayerAndRessource (Player, PlayerRessourceH, PlayerRessourceS, PlayerRessourceM) VALUES ("", "", "", "")'  
    "SELECT Player FROM AuktionsLager", function(err, result, fields){  
        if(err) throw err;  
        //result[0].Player  
        //console.log(result.length);  
        vorhandeneSpieler = result.length;  
       // updateNicknames();  
       });  
//console.log("Hierhin kommt der code 2");  
var query = connection.query(  
// 'INSERT INTO PlayerAndRessource (Player, PlayerRessourceH, PlayerRessourceS, PlayerRessourceM) VALUES ("", "", "", "")'  
    "SELECT ID, Player, HolzMenge, HolzWunschMenge, SteinMenge, SteinWunschMenge, MetallMenge, MetallWunschMenge FROM AuktionsLager", function(err, result, fields){  
        if(err){  
            console.log("Ein Fehler ist aufgetreten bei der generierung der Buttons!");  
        }else{  
            delete Player;  
Player = [];  
HolzMenge = [];  
HolzWunschMenge = [];  
SteinMenge = [];  
SteinWunschMenge = [];  
MetallMenge = [];  
MetallWunschMenge = [];  
Struktur = [];  
        for(a=0; a < vorhandeneSpieler; a++){  
            console.log(result[a].Player+" Was ist der Fehler?");  
            if(result[a].Player == "undefined"){  
                console.log("Hier liegt der fehler aber wiso?^^");  
                //es kommt vo das result[a] undefiniert ist dan gibs ein fehler aber wiso?  
                return;  
            }  
            //console.log(result[a].Player);  
            //Falls dieser Fehler eintrifft tuh nichts -  
  
        Player[a] = result[a].Player+" ";  
        //console.log(Player[a]);  
        if(result[a].HolzMenge === null){  
                HolzMenge[a] = "";  
            }else{  
                HolzMenge[a] = "bietet: "+result[a].HolzMenge+" Holz ";  
            }  
        if(result[a].HolzWunschMenge === null){  
                HolzWunschMenge[a] = "";  
            }else{  
                HolzWunschMenge[a] = "Sucht: "+result[a].HolzWunschMenge+" Holz &lt;button id=&quot;Kaufen"+a+"&quot; value=&quot;"+result[a].ID+"&quot;&gt;Kaufen&lt;/button&gt;";  
            }  
        if(result[a].SteinMenge === null){  
                SteinMenge[a] = "";  
            }else{  
                SteinMenge[a] = "bietet: "+result[a].SteinMenge+" Stein ";  
            }  
        if(result[a].SteinWunschMenge === null){  
                SteinWunschMenge[a] = "";  
            }else{  
                SteinWunschMenge[a] = "Sucht: "+result[a].SteinWunschMenge+" Stein &lt;button id=&quot;Kaufen"+a+"&quot; value=&quot;"+result[a].ID+"&quot;&gt;Kaufen&lt;/button&gt;";  
            }  
        if(result[a].MetallMenge === null){  
                MetallMenge[a] = "";  
            }else{  
                MetallMenge[a] = "bietet: "+result[a].MetallMenge+" Metall ";  
            }  
        if(result[a].MetallWunschMenge === null){  
                MetallWunschMenge[a] = "";  
            }else{  
                MetallWunschMenge[a] = "Sucht: "+result[a].MetallWunschMenge+" Metall &lt;button id=&quot;Kaufen"+a+"&quot; value=&quot;"+result[a].ID+"&quot;&gt;Kaufen&lt;/button&gt;";  
            }  
            Struktur[a] = Player[a]+HolzMenge[a]+HolzWunschMenge[a]+SteinMenge[a]+SteinWunschMenge[a]+MetallMenge[a]+MetallWunschMenge[a]+"</br>";  
    }  
        console.log(vorhandeneSpieler);  
        if(Speicher === vorhandeneSpieler && socket.PlayerLoader >= 1){  
            //console.log("Es gab kein Update, sende nichts!");  
        }else{  
            console.log('Update Aktionshaus!');  
        socket.PlayerLoader++;  
        Speicher = vorhandeneSpieler;  
        io.sockets.emit('AuktionsLagerUpdater', Struktur, vorhandeneSpieler);  
        }  
    }  
    });  
    connection.end();  
}