2017-07-26 2 views
5

Ich versuche zu lernen, wie man Javascript verwendet, um eine Verbindung zu einer postgresql-Datenbank herzustellen, aber wenn ich versuche, eine Abfrage an die Konsole mit query.on (...) zu protokollieren, bekomme ich einen Typ Fehler, der sagt "Query.on ist keine Funktion". Ich habe ausführlich darüber nachgelesen, wie man das beheben kann, aber ich finde keine Dokumentation über die .on-Funktion. Ich weiß, dass die Verbindung erfolgreich ist, da, wenn ich die Datenbank von Terminal abfrage, die zwei neuen Zeilen hinzugefügt wurden.query.on ist keine Funktion

jsontest.js

var pg = require('pg'); 
var conString = "postgres://[username]:[password]@localhost:5432/VONKTA1"; 
//username and password masked 

var client = new pg.Client(conString); 

client.connect(); 

client.query("INSERT INTO json_test (name, attributes) VALUES ('Ted', $1)", [{"age": 2, "gender": "M"}]); 
client.query("INSERT INTO json_test (name, attributes) VALUES ('Sarah', $1)", [{"age": 8, "gender": "F"}]); 

console.log("about to query"); 

var query = client.query("SELECT * FROM json_test"); 

query.on('row', function(row) { 
    console.log(row); 
}); 

query.on('end', function() { 
    client.end(); 
}); 

package.json

{ 
    "name": "test", 
    "version": "1.0.0", 
    "description": "", 
    "main": "test.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "", 
    "license": "ISC", 
    "dependencies": { 
    "pg": "^7.0.2", 
    } 
} 
+0

ohne Kenntnis zu haben, was 'pg.Client' ist, können Sie einfach melden Sie sich einfach die Konsole' Abfrage '? Sie können sehen, welche Methoden zur Verfügung stehen, vielleicht gibt es einen Fehler beim Erstellen eines neuen 'pg.Client'-Objekts? – jdmdevdotnet

+0

'query.on' wurde aus dem Knoten-pg entfernt. 7. Siehe https://node-postgres.com/guides/upgrading für die korrekte Handhabung von Zeilen. –

+0

nie benutzt diese lib, aber aus einem kurzen Blick, sehe ich nichts über '.on' in den Dokumenten. Sie verwenden Rückrufe, Versprechen oder 'erwarten/async' anstatt Ereignisse – baao

Antwort

5

query.on wurde von Knoten pg 7.

Reihen https://node-postgres.com/guides/upgrading für wie man richtig handhaben Siehe entfernt wurde .

Der übliche Weg ist, Versprechen oder Asynchron/erwarten zu verwenden (Versprechen in klarer Weise verwenden):

await client.connect(); 
var res = await client.query("SELECT * FROM json_test"); 
res.rows.forEach(row=>{ 
    console.log(row); 
}); 
await client.end();