NodeJS -> mysql object ausgabe zu string / array?

08/06/2015 17:02 .Barone#1
Hallo epvp'ler. Ich nutze das node-mysql package um mit meiner Db zu arbeiten. Query:
PHP Code:
var thecmd connection.query('SELECT command from usercmds where username ="username"',function(err,rows,fields){
if(!
err)
   
console.log(rows);
  else
    
console.log('Error while performing Query.');
}); 
Das spuckt mir das Array (rows) aus als object.
Console log = [{command:"3"},{command:"50"}]
Das möchte ich nun so convertieren, das ich zb der variable "hallo" den wert des ersten objects zuweißen kann (in diesem falle "3")
Habt ihr dort eine lösung?
json.parse & stringify bringen nichts, .tostring() bringt ebenfalls nichts.
08/06/2015 19:01 Daifoku#2
Code:
for (var i in rows) {
        console.log(rows[i].command);
}
08/06/2015 19:13 .Barone#3
Quote:
Originally Posted by Daifoku View Post
Code:
for (var i in rows) {
        console.log(rows[i].command);
}
jain.
1
2
43
55
2
steht dann in der Console.
Jedoch würde ich das ganze zb dann als array haben, wo ich dann halt zb i[0] für den ersten wert, i[1] für den zweiten usw nutzen kann.
var commands = rows.map(function (obj) {
return obj.command;
}); geht theoretisch auch. selbes ergebnis..
08/06/2015 19:30 Daifoku#4
Quote:
Originally Posted by .Barone View Post
Jedoch würde ich das ganze zb dann als array haben, wo ich dann halt zb i[0] für den ersten wert, i[1] für den zweiten usw nutzen kann.
Der Rückgabewert von query ist ein array und du kannst genau so, wie du es beschreibst, auf die jewiligen Objekte zugreifen o.O

Ich glaube du solltest dich zunächst einmal mit grundlegendem javascript/jquery auseinandersetzen.
Falls du echt einfach nur die assiziation entfernen willst, was ich für sehr seltsam halte, kannst du auch einfach n array erstellen und die einzelnen Elemente in das neue array pushen.

Code:
var list = new Array();
....
list.push(rows[i].command)
Aber das ist Grundwissen ? War das echt deine Frage ?
08/06/2015 19:55 .Barone#5
Quote:
Originally Posted by Daifoku View Post
Der Rückgabewert von query ist ein array und du kannst genau so, wie du es beschreibst, auf die jewiligen Objekte zugreifen o.O

Ich glaube du solltest dich zunächst einmal mit grundlegendem javascript/jquery auseinandersetzen.
Falls du echt einfach nur die assiziation entfernen willst, was ich für sehr seltsam halte, kannst du auch einfach n array erstellen und die einzelnen Elemente in das neue array pushen.

Code:
var list = new Array();
....
list.push(rows[i].command)
Aber das ist Grundwissen ? War das echt deine Frage ?
Und wie genau? ja, ich bin noch relativ neu in diesem bereich, ...
habe es mit (siehe anfangspost) thecmd[1] usw versucht, aber das geht ja nicht. :p
08/06/2015 22:59 RecK#6
Nicht new Array! var list = []; // richtig in dem Fall
Siehe auch: [Only registered and activated users can see links. Click Here To Register...]

JavaScript Array:
Array = Auflistung / Collection
Beinhaltet einen Wert pro Index (0,1,2,3...)

JavaScript Object:
Beinhaltet Attribute. Diese haben einen Namen (key) und einen Wert (value)


In deinem Fall liefert dir der Query ein Array zurück.
In diesem Array befinden sich einzelne Objekte.

Array -> Rows (Zeilen der Abfrage)
Objekt in Array -> Daten (Spaltenname (key) mit Werten)
Code:
// Array-Index beginnt bei 0 !
queryResult[0].commands = 3; // setze commands von Zeile 1 des Ergebnis der Abfrage auf 3

for(var row in queryResult) {
     console.log('Index' + row + ': ' + queryResult[row].commands);
}
Liefert:
Index0: 3
Index1: 50

Alles ausgeben:
Code:
for(var row in queryResult) {
     console.log('Attributes from Row ' + row);
     for(var attribute in queryResult[row]) {
         console.log('Row ' + row + ' contains "' + attribute + '" with value ' + queryResult[row][attribute]);
     }
}
Liefert:
Attributes from Row 0
Row 0 contains "commands" with value 3
Attributes from Row 1
Row 1 contains "commands" with value 50

Hoffe es hilft.

Ps: Warum nennen alle jQuery im Context von Node.js?


Grüße