Retour résultat de SÉLECTIONNER avec nœud-postgres
De la difficulté à obtenir des résultats à partir de requêtes sélection du nœud-postgres. Maintenant, les lignes sont vides à la fin de la codeblock. Sélectionnez simplement renvoie une valeur à partir d'une séquence dans POSTGRESQL. Je sais que vous ne pouvez pas récupérer les résultats de rappel, mais y at-il quelqu'un ici qui ont utilisé nœud-postgres(ou toute autre base de données, modules de nœud) qui pourrait connaître un correctif?
client.connect();
var query = client.query("SELECT nextval(\'idgenerator\');");
var rows = [];
query.on('row', function(row, res) {
rows.push(row);
});
query.on('end', function(result) {
console.log(result.rowCount + ' rows were received');
});
//client.end();
console.log(rows);
OriginalL'auteur magnudae | 2013-07-03
Vous devez vous connecter pour publier un commentaire.
Vous aurez à apprendre javascript /nodejs, et la programmation d'événements.
query.on('row', function() { /*CODE*/})
signifie : "lorsqu'une ligne est lue, d'exécuter du CODE".C'est asynchrone; si la requête.sur() vous inscrire à l'événement, et les retours.
So when console.log(rows)
est appelé, les lignes est encore vides, parce que n 'row' événement a été déclenché sur requête, encore.Vous devriez essayer de mettre des 'console.journal(lignes) " dans le corps de la requête.('fin') gestionnaire d'événement.
Partout dans le code, vous devez également écrire quelques
console.log
. Vous aurez voir asynchrone chose.OriginalL'auteur Drasill
Si nous n'avons pas le résultat.addRow() la méthode, les lignes de la matrice serait vide à la fin de l'événement.
Ref: http://nodeexamples.com/2012/09/21/connecting-to-a-postgresql-database-from-node-js-using-the-pg-module/
à l'intérieur de la "fin" de l'écoute, vous pouvez retourner le résultat par 1. une fonction de rappel qui sera mise à jour de la réponse à la demande des sockets (à l'aide d'une douille.io) ex: rappel(suite); 2. à l'aide de "q" de la bibliothèque ex: var q = require('q'); ... // attente d'une requête de données\n queryDb(params).ensuite(function(data) { }); var ... queryDb = function(args) { var différé = q.reporter(); ... de la requête.('fin', function(result) { différé.résoudre(le résultat.les lignes); }); return différé.promesse; }
Merci pour votre attention, j'ai trouvé énorme js
OriginalL'auteur abdulwadood