2017-07-26 17 views
5

Próbuję nauczyć się, jak używać javascript do łączenia się z bazą danych PostgreSQL, ale kiedy próbuję zalogować zapytanie do konsoli za pomocą query.on (...), otrzymuję typ błąd, który mówi "query.on nie jest funkcją". Obszernie przeszukałem, jak rozwiązać ten problem, ale nie można znaleźć żadnej dokumentacji dotyczącej funkcji .on. Wiem, że połączenie powiodło się, ponieważ po wysłaniu zapytania do bazy danych z terminala dodano dwa nowe wiersze.query.on nie jest funkcją

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

bez żadnej wiedzy co 'pg.Client' jest, można po prostu tylko pocieszyć zalogować' zapytania '? Możesz zobaczyć, jakie metody są dostępne, być może wystąpił błąd podczas tworzenia nowego obiektu 'pg.Client'? – jdmdevdotnet

+0

'query.on' został usunięty z node-pg 7. Zobacz, jak poprawnie obsłużyć wiersze na stronie https://node-postgres.com/guides/upgrading. –

+0

nigdy nie korzystałem z tej biblioteki, ale z szybkiego spojrzenia nie widzę niczego na temat ".on" w dokumentach. Używają wywołań zwrotnych, obietnic lub 'oczekują/asynchronizują' zamiast zdarzeń – baao

Odpowiedz

5

query.on została usunięta z węzła-PG 7.

Zobacz https://node-postgres.com/guides/upgrading dla jak prawidłowo obsługiwać wiersze .

Zwykłym sposobem jest użycie obietnic lub asynchronicznie/czekają (za pomocą obietnic w jaśniejszy sposób):

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