2017-10-17 4 views
1

Ich habe eine Node.js-Anwendung, die Daten in ein MySQL-Backend schreibt. Ein Feld ist ein Array, das ich stringify. Ich kann in der Werkbank sehen, dass die Daten in der Datenbank korrekt sind. Wenn ich es jedoch abrufe, erhalte ich einen Fehler, wenn ich versuche, es zu analysieren. Ich kann JSON, das von MySQL zurückgegeben wurde, nicht analysieren

"Unexpected Token o in JSON an Position 1"

Wenn ich das Ergebnis log zeigt es als [Object Object] up.

Von was ich online gelesen habe bedeutet dies, dass es bereits ein JS-Objekt ist und ich es nicht analysieren muss. Ich kann jedoch nichts darüber finden, wie man auf die Daten zugreifen kann.

process: function (bot, msg, suffix) { 

    var ftcmds = suffix.split(" ", 1); 
    var ftName = ftcmds[0]; 
    var ftArray; 
    var selectSQL = "SELECT FireTeam FROM fireteam WHERE Name = '" + ftName + "'"; 
    var updateSQL = "UPDATE fireteam SET FireTeam = '" + ftArray + "'WHERE Name = '" + ftName + "'"; 

    mysqlcon.query(selectSQL, function (err, result) { 
     console.log("Result |" + result); 
     console.log("Error |" + err); 
     if (err) { 
      console.log("Caught Error " + err + " " + msg.author); 
     } 
     else { 
      console.log("Recovered result " + result); 

      ftArray = result; 
      console.log("Attempting to update array"); 

      ftArray.push(msg.author.id); 
      console.log("updated array " + ftArray); 

      var jsonArray = JSON.stringify(ftArray); 
      mysqlcon.query(updateSQL, function (err, result) { 
       console.log("Result |" + result); 
       console.log("Error |" + err); 

       if (err.toString().indexOf(dupErr) != -1) { 
        msg.author.send("Could not find that fireteam"); 
        console.log("Error: Did not locate the requested name " + msg.author) 
       } else if (err) { 
        console.log("Caught Error " + err + " " + msg.author); 
       } 
       else { 
        msg.author.send("You have joined Fireteam " + name + ". I will setup a group chat on " + date + " if your team fills up."); 
       } 
      }) 
     } 
    }); 
} 

Antwort

1

Sie sollten nur in der Lage sein, es als ein Objekt zuzugreifen, so dass, wenn Ergebnisfelder Namen und Titel hat man sie nur so zugreifen:

var name = result.name 
var title = result.title 
+0

Was passiert, wenn es keine Felder hat? Es ist ein einfaches Array von Strings, ich könnte es falsch gebrauchen. –

+0

Dann könnten Sie auf die Zeichenfolgen als ein Array zugreifen (z. B. Ergebnis [0], Ergebnis [1] usw.) –

Verwandte Themen