Comment accéder à un objet RowDataPacket
Je suis en train de développer une application de bureau avec Node-webkit. Pendant ce processus, j'ai besoin d'obtenir des données à partir d'un local MySQL-base de données.
L'interrogation fonctionne bien, mais je ne peux pas comprendre comment l'accès aux résultats. Je stocke tout dans un tableau, qui est ensuite transmise à une fonction. Dans la console, ils ressemblent à ceci:
RowDataPacket {user_id: 101, ActionsPerformed: 20}
RowDataPacket {user_id: 102, ActionsPerformed: 110}
RowDataPacket {user_id: 104, ActionsPerformed: 3}
Et voici la structure de la requête:
var ret = [];
conn.query(SQLquery, function(err, rows, fields) {
if (err)
alert("...");
else {
for (var i of rows)
ret.push(i);
}
doStuffwithTheResult(ret);
}
Comment puis-je récupérer cette dans le doStuffwithTheResult
fonction? Les valeurs sont plus importantes, mais si je pouvais obtenir les clés, ce serait génial.
Vous devez vous connecter pour publier un commentaire.
S'avère qu'ils sont des objets classiques et vous pouvez y accéder à travers
user_id
.Si le résultat est un tableau, vous devez utiliser
[0].user_id
.RowDataPacket.user_id
et c'était pas défini. Cela m'a sauvé quelques maux de tête 🙂J'ai aussi rencontré le même problème récemment, lorsque j'utilise la ligne de flottaison dans le projet de l'express pour des requêtes complexes ,utiliser l'instruction SQL de la requête.
c'est ma solution: tout d'abord transformer la valeur de retour(RowDataPacket objet) en chaîne de caractères, puis de convertir cette chaîne de caractères dans l'objet json.
Voici le code :
Ce qui suit est la console:
JSON.parse(JSON.stringify(results))
res.send(JSON.stringify(results))
, pas deJSON.parse
nécessaire. il a obtenu automatiquement analysé sur le frontend. merci pour de me pointer dans la bonne direction!Vous pouvez copier l'ensemble énumérable propres propriétés d'un objet à un autre en Objet.attribuer(cible, sources...):
donc, dans votre scénario, il devrait être suffisant pour changer
à
Avec
Object.prototype
approche,JSON.parse(JSON.stringify(rows))
renvoie l'objet, d'en extraire les valeurs avecObject.values()
Utilisation:
vous d'essayer le code qui donne JSON sans rowdatapacket:
ret
est une chaîne JSON, etret[0]
retourne le premier caractère, qui est[
.J'ai trouvé un moyen facile
Db couche ne les analyse comme
Ce sera le retour des éléments comme normal tableau JSON.
à aller hors de jan de réponse faible-de la copie de l'objet, un autre chiffon propre mise en œuvre à l'aide de la carte de fonction,
De haut niveau de ce que cette solution n': itérer sur toutes les lignes et copie les lignes comme valide objets js.
Nous avons utilisé la matrice de la carte fonction: il va aller sur chaque élément d'un tableau, utilisez l'élément en entrée de la fonction, et insérer le résultat de la fonction dans le tableau que vous attribuez.
plus précisément sur la objectifyRawPacket fonction: à chaque fois qu'il appelle sa de voir le "{ RawDataPacket }" dans le tableau source. Ces objets agissent comme des objets classiques - les "..." (spread) opérateur de copie les éléments du tableau après les périodes - essentiellement de copier les éléments dans l'objet, il est appelé dans.
Des parenthèses autour de la propagation de l'opérateur sur la fonction sont nécessaires pour implicitement retourner un objet à partir d'une flèche fonction.
Plus simple:
Dans mon exemple, j'ai reçu un objet en réponse.
Lorsque j'utilise l'Objet.les valeurs que j'ai la valeur de la propriété comme une réponse, mais il vient à l'intérieur d'un tableau, à l'aide de [0] pour accéder au premier indice de ce tableau, maintenant, j'ai la valeur de l'utiliser où j'en ai besoin.