Ich versuche, JavaScript zum Lesen/Schreiben in eine PostgreSQL-Datenbank zu bekommen. Ich fand dies Projekt auf GitHub. Ich konnte den folgenden Beispielcode in Node zum Laufen bringen.
var pg = require('pg'); //native libpq bindings = `var pg = require('pg').native`
var conString = "tcp://postgres:1234@localhost/postgres";
var client = new pg.Client(conString);
client.connect();
//queries are queued and executed one after another once the connection becomes available
client.query("CREATE TEMP TABLE beatles(name varchar(10), height integer, birthday timestamptz)");
client.query("INSERT INTO beatles(name, height, birthday) values($1, $2, $3)", ['Ringo', 67, new Date(1945, 11, 2)]);
client.query("INSERT INTO beatles(name, height, birthday) values($1, $2, $3)", ['John', 68, new Date(1944, 10, 13)]);
//queries can be executed either via text/parameter values passed as individual arguments
//or by passing an options object containing text, (optional) parameter values, and (optional) query name
client.query({
name: 'insert beatle',
text: "INSERT INTO beatles(name, height, birthday) values($1, $2, $3)",
values: ['George', 70, new Date(1946, 02, 14)]
});
//subsequent queries with the same name will be executed without re-parsing the query plan by postgres
client.query({
name: 'insert beatle',
values: ['Paul', 63, new Date(1945, 04, 03)]
});
var query = client.query("SELECT * FROM beatles WHERE name = $1", ['John']);
//can stream row results back 1 at a time
query.on('row', function(row) {
console.log(row);
console.log("Beatle name: %s", row.name); //Beatle name: John
console.log("Beatle birth year: %d", row.birthday.getYear()); //dates are returned as javascript dates
console.log("Beatle height: %d' %d\"", Math.floor(row.height/12), row.height%12); //integers are returned as javascript ints
});
//fired after last row is emitted
query.on('end', function() {
client.end();
});
Als Nächstes habe ich versucht, es auf einer Webseite laufen zu lassen, aber es schien nichts zu passieren. Ich habe in der JavaScript-Konsole nachgesehen, und es heißt nur "require not defined".
Was ist also dieses "erfordern"? Warum funktioniert es in Node, aber nicht in einer Webseite?
Außerdem musste ich, bevor ich es in Node zum Laufen brachte, Folgendes tun npm install pg
. Was hat es damit auf sich? Ich habe in dem Verzeichnis nachgesehen und keine Datei pg gefunden. Wo hat es sie abgelegt, und wie findet JavaScript sie?