Próbuję utworzyć bazę danych PostgreSQL, więc zainstalowałem PostgreSQL i uruchomiłem serwer z initdb /usr/local/pgsql/data
, a następnie uruchomiłem tę instancję z postgres -D /usr/local/pgsql/data
. Jak mogę z tym współdziałać poprzez węzeł ? Na przykład, czym byłby connectionstring
, lub jak mogę się dowiedzieć, co to jest.Jak połączyć się z Postgresem za pośrednictwem Node.js
Odpowiedz
Oto przykład użyłem do połączenia pliku node.js z moją bazą danych Postgres.
Interfejs w node.js, że kiedyś można znaleźć tutaj https://github.com/brianc/node-postgres
var pg = require('pg');
var conString = "postgres://YourUserName:[email protected]:5432/YourDatabase";
var client = new pg.Client(conString);
client.connect();
//queries are queued and executed one after another once the connection becomes available
var x = 1000;
while (x > 0) {
client.query("INSERT INTO junk(name, a_number) values('Ted',12)");
client.query("INSERT INTO junk(name, a_number) values($1, $2)", ['John', x]);
x = x - 1;
}
var query = client.query("SELECT * FROM junk");
//fired after last row is emitted
query.on('row', function(row) {
console.log(row);
});
query.on('end', function() {
client.end();
});
//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();
});
Wystarczy dodać inną opcję - używam Node-DBI podłączyć do PG, ale również ze względu na możliwość porozmawiania z MySQL i sqlite. Node-DBI zawiera również funkcję do budowania instrukcji select, która jest przydatna do robienia dynamicznych rzeczy w locie.
Szybkie próbki (config informacje przechowywane w innym pliku):
var DBWrapper = require('node-dbi').DBWrapper;
var config = require('./config');
var dbConnectionConfig = { host:config.db.host, user:config.db.username, password:config.db.password, database:config.db.database };
var dbWrapper = new DBWrapper('pg', dbConnectionConfig);
dbWrapper.connect();
dbWrapper.fetchAll(sql_query, null, function (err, result) {
if (!err) {
console.log("Data came back from the DB.");
} else {
console.log("DB returned an error: %s", err);
}
dbWrapper.close(function (close_err) {
if (close_err) {
console.log("Error while disconnecting: %s", close_err);
}
});
});
config.js:
var config = {
db:{
host:"plop",
database:"musicbrainz",
username:"musicbrainz",
password:"musicbrainz"
},
}
module.exports = config;
Hej, mlaccetti, mam podobny problem, próbując połączyć się i uruchomić testy z bazą danych SQLite3. Przechodzę samouczek z instrukcjami korzystania z DBWrapper, dlatego właśnie docieram do Ciebie. Moje pytanie jest tutaj: http://stackoverflow.com/q/35803874/1735836 – Patricia
Węzeł Node-DBI został od dawna porzucony i nie jest już obsługiwany. –
Proste podejście: pg-promise, jeśli jesteś zaznajomiony z obietnicami, że jest;)
var pgp = require('pg-promise')(/*options*/);
var cn = {
host: 'localhost', // server name or IP address;
port: 5432,
database: 'myDatabase',
user: 'myUser',
password: 'myPassword'
};
// alternative:
// var cn = 'postgres://username:[email protected]:port/database';
var db = pgp(cn); // database instance;
// select and return user name from id:
db.one('SELECT name FROM users WHERE id = $1', 123)
.then(user => {
console.log(user.name); // print user name;
})
.catch(error => {
console.log(error); // print the error;
});
Zobacz również: How to correctly declare your database module.
Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj istotne części odpowiedzi i podać link do odniesienia. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. – arulmr
W idealnym świecie - tak, a jednak akceptowana tutaj odpowiedź, jak widać powyżej - tylko link. Tak samo jak tam, byłoby zbyt wielkim zbytnim streszczaniem informacji zawartych w linku, a biorąc pod uwagę, że oba łącza są udostępniane repozytoriom publicznym GitHub, szanse na to, że zginą, to nie więcej niż szansa, że StackOverflow pójdzie martwy . –
Może wystarczy podać prosty przykład użycia go do czegoś bardzo podstawowego, które powinno zająć tylko kilka linii, ale wystarczyłoby, aby nie było tylko linkiem. –
Jednym z rozwiązań może być za pomocą pool
klientów jak następuje:
const pg = require('pg');
var config = {
user: 'foo',
database: 'my_db',
password: 'secret',
host: 'localhost',
port: 5432,
max: 10, // max number of clients in the pool
idleTimeoutMillis: 30000
};
pool.on('error', function (err, client) {
console.error('idle client error', err.message, err.stack);
});
pool.query('SELECT $1::int AS number', ['2'], function(err, res) {
if(err) {
return console.error('error running query', err);
}
console.log('number:', res.rows[0].number);
});
można zobaczyć więcej szczegółów na this resource.
- 1. Jak połączyć się z nethack z Node.js?
- 2. Jak połączyć się z serwerem SQL za pośrednictwem serwera proxy
- 3. Jak połączyć się z lokalnym serwerem MySQL za pośrednictwem Docker?
- 4. Nie mogę połączyć się z usługami analizy za pośrednictwem excela
- 5. Jak połączyć się z mongodb z node.js (i uwierzytelnić)?
- 6. problem z websocket: nie można połączyć się z serwerem node.js
- 7. Jak korzystać z phpPgAdmin z Postgresem
- 8. Opcje ETL z Postgresem
- 9. Rura strumienia MJPEG za pośrednictwem proxy Node.js
- 10. Routing żądań HTTP za pośrednictwem Node.js
- 11. Jak połączyć się z witryną https ze Scrapy za pośrednictwem Polipo nad TOR?
- 12. Połącz się z usługą Active Directory za pośrednictwem LDAP
- 13. Jak udostępniać pliki statyczne za pośrednictwem Node.js lokalnie?
- 14. Jak połączyć dwa węzły Elixir za pośrednictwem sieci lokalnej?
- 15. Połączyć się z bazą danych za pośrednictwem proxy w python skryptu
- 16. Jak połączyć dwa serwery node.js z gniazdami internetowymi?
- 17. Nie można połączyć się z wyjątkiem hosta SMTP podczas wysyłania poczty za pośrednictwem interfejsu JavaMail API
- 18. Nie można połączyć się z lokalnym serwerem MySQL za pośrednictwem Apps Script (JDBC)
- 19. Jak komunikować się z serwerem pocztowym za pośrednictwem aplikacji internetowej?
- 20. nie można połączyć się z mongolabem za pomocą node.js na heroku
- 21. Jak połączyć się z Sybase za pomocą PHP
- 22. Jak połączyć się z MySQL za pomocą Java?
- 23. Jak połączyć się z localhost za pomocą SSH (PuTTy)
- 24. Jak połączyć się z serwisem WWW za pomocą vbscript (synchroniczny)?
- 25. Jak połączyć się z siecią Wi-Fi za pomocą Pythona?
- 26. Jak połączyć się z boost.system z cmake
- 27. Jak podłączyć socket.io za pośrednictwem odwrotnego proxy
- 28. Wysyłaj binarny bufor do klienta za pośrednictwem http.ServerResponse w Node.js
- 29. Jak połączyć się ze zdalnym serwerem Redis?
Teraz ten typ przykładu chciałbym zobaczyć. Jasne i zawierające tylko tyle kodu. Dzięki JustBob. – Stradas
Co dodano w pliku pg_hba.conf, aby zezwolić na połączenia z pliku node.js? Dzięki –
host wszystkie 0.0.0.0/0 md5 Ten wpis będzie, jeśli dobrze pamiętam niech każdy IP połączyć. Należy pamiętać, że nie jest to specyficzne dla węzła, ale specyficzne dla PostgreSQL. Również w postgresql.conf mam listen_addresses = '*'. W przypadku konfiguracji produkcyjnych zapoznaj się z dokumentacją, aby upewnić się, że nie otwierasz otworów w dowolnym miejscu. Używam tego w mojej konfiguracji dev, więc nie ma problemu, aby umożliwić połączenie z dowolną maszyną. – Kuberchaun