jkasun преди 5 години
ревизия
5687351750
променени са 12 файла, в които са добавени 455 реда и са изтрити 0 реда
  1. 21 0
      connect.js
  2. 25 0
      create-table.js
  3. 25 0
      cursor.js
  4. 30 0
      delete-data.js
  5. 25 0
      insert-data.js
  6. 124 0
      package-lock.json
  7. 16 0
      package.json
  8. 48 0
      pool-async-await.js
  9. 34 0
      pool-promise.js
  10. 49 0
      pool.js
  11. 27 0
      select-data.js
  12. 31 0
      update-date.js

+ 21 - 0
connect.js

@@ -0,0 +1,21 @@
+const { Client } = require('pg')
+
+const client = new Client({
+    user: 'postgres',
+    host: 'localhost',
+    database: 'testdb',
+    password: '1234abcd',
+    port: 5432,
+});
+
+client.connect()
+
+client.query('SELECT NOW()', (err, res) => {
+    if (err) {
+        console.error(err);
+        return;
+    }
+
+    console.log('Connection successful');
+    client.end()
+});

+ 25 - 0
create-table.js

@@ -0,0 +1,25 @@
+const { Client } = require('pg')
+
+const client = new Client({
+    user: 'postgres',
+    host: 'localhost',
+    database: 'testdb',
+    password: '1234abcd',
+    port: 5432,
+});
+
+client.connect()
+
+const query = `
+CREATE TABLE users (
+    email varchar,
+    firstName varchar,
+    lastName varchar,
+    age int
+);
+`
+
+client.query(query, (err, res) => {
+    console.log(err, res)
+    client.end()
+});

+ 25 - 0
cursor.js

@@ -0,0 +1,25 @@
+const { Pool } = require('pg')
+const Cursor = require('pg-cursor')
+
+const pool = new Pool({
+    user: 'postgres',
+    host: 'localhost',
+    database: 'testdb',
+    password: '1234abcd',
+    port: 5432,
+});
+
+(async () => {
+    const client = await pool.connect();
+    const query = 'SELECT * FROM users';
+
+    const cursor = await client.query(new Cursor(query));
+
+    cursor.read(1, (err, rows) => {
+        console.log(rows);
+
+        cursor.read(1, (err, rows) => {
+            console.log(rows);
+        });
+    })
+})();

+ 30 - 0
delete-data.js

@@ -0,0 +1,30 @@
+const { Client } = require('pg')
+
+const client = new Client({
+    user: 'postgres',
+    host: 'localhost',
+    database: 'testdb',
+    password: '1234abcd',
+    port: 5432,
+});
+
+client.connect()
+
+const query = `
+DELETE FROM users
+WHERE email = 'johndoe@gmail.com'
+`
+
+client.query(query, (err, res) => {
+    if (err) {
+        console.error(err);
+        return;
+    }
+
+    if (err) {
+        console.error(err);
+        return;
+    }
+
+    console.log('Data delete successful');
+});

+ 25 - 0
insert-data.js

@@ -0,0 +1,25 @@
+const { Client } = require('pg')
+
+const client = new Client({
+    user: 'postgres',
+    host: 'localhost',
+    database: 'testdb',
+    password: '1234abcd',
+    port: 5432,
+});
+
+client.connect()
+
+const query = `
+INSERT INTO users (email, firstName, lastName, age)
+VALUES ('johndoe@gmail.com', 'john', 'doe', 21)
+`
+
+client.query(query, (err, res) => {
+    if (err) {
+        console.error(err);
+        return;
+    }
+
+    console.log('Data insert successful');
+});

+ 124 - 0
package-lock.json

@@ -0,0 +1,124 @@
+{
+  "name": "project",
+  "version": "1.0.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "buffer-writer": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz",
+      "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw=="
+    },
+    "packet-reader": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz",
+      "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ=="
+    },
+    "pg": {
+      "version": "7.17.1",
+      "resolved": "https://registry.npmjs.org/pg/-/pg-7.17.1.tgz",
+      "integrity": "sha512-SYWEip6eADsgDQIZk0bmB2JDOrC8Xu6z10KlhlXl03NSomwVmHB6ZTVyDCwOfT6bXHI8QndJdk5XxSSRXikaSA==",
+      "requires": {
+        "buffer-writer": "2.0.0",
+        "packet-reader": "1.0.0",
+        "pg-connection-string": "0.1.3",
+        "pg-packet-stream": "^1.1.0",
+        "pg-pool": "^2.0.9",
+        "pg-types": "^2.1.0",
+        "pgpass": "1.x",
+        "semver": "4.3.2"
+      }
+    },
+    "pg-connection-string": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz",
+      "integrity": "sha1-2hhHsglA5C7hSSvq9l1J2RskXfc="
+    },
+    "pg-cursor": {
+      "version": "2.1.6",
+      "resolved": "https://registry.npmjs.org/pg-cursor/-/pg-cursor-2.1.6.tgz",
+      "integrity": "sha512-61En061/NFsfKOY0EvIdcl1l2FDvoeFSD2RLe57qA0rX0TbNxQ1TK9JOZaTTKrxk6L8opiHAv/IRAoHFMacKEQ=="
+    },
+    "pg-int8": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
+      "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="
+    },
+    "pg-packet-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/pg-packet-stream/-/pg-packet-stream-1.1.0.tgz",
+      "integrity": "sha512-kRBH0tDIW/8lfnnOyTwKD23ygJ/kexQVXZs7gEyBljw4FYqimZFxnMMx50ndZ8In77QgfGuItS5LLclC2TtjYg=="
+    },
+    "pg-pool": {
+      "version": "2.0.9",
+      "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.9.tgz",
+      "integrity": "sha512-gNiuIEKNCT3OnudQM2kvgSnXsLkSpd6mS/fRnqs6ANtrke6j8OY5l9mnAryf1kgwJMWLg0C1N1cYTZG1xmEYHQ=="
+    },
+    "pg-types": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
+      "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
+      "requires": {
+        "pg-int8": "1.0.1",
+        "postgres-array": "~2.0.0",
+        "postgres-bytea": "~1.0.0",
+        "postgres-date": "~1.0.4",
+        "postgres-interval": "^1.1.0"
+      }
+    },
+    "pgpass": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz",
+      "integrity": "sha1-Knu0G2BltnkH6R2hsHwYR8h3swY=",
+      "requires": {
+        "split": "^1.0.0"
+      }
+    },
+    "postgres-array": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
+      "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="
+    },
+    "postgres-bytea": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz",
+      "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU="
+    },
+    "postgres-date": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.4.tgz",
+      "integrity": "sha512-bESRvKVuTrjoBluEcpv2346+6kgB7UlnqWZsnbnCccTNq/pqfj1j6oBaN5+b/NrDXepYUT/HKadqv3iS9lJuVA=="
+    },
+    "postgres-interval": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
+      "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
+      "requires": {
+        "xtend": "^4.0.0"
+      }
+    },
+    "semver": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz",
+      "integrity": "sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c="
+    },
+    "split": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+      "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+      "requires": {
+        "through": "2"
+      }
+    },
+    "through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+    },
+    "xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+    }
+  }
+}

+ 16 - 0
package.json

@@ -0,0 +1,16 @@
+{
+  "name": "project",
+  "version": "1.0.0",
+  "description": "",
+  "main": "index.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "keywords": [],
+  "author": "",
+  "license": "ISC",
+  "dependencies": {
+    "pg": "^7.17.1",
+    "pg-cursor": "^2.1.6"
+  }
+}

+ 48 - 0
pool-async-await.js

@@ -0,0 +1,48 @@
+const { Pool } = require('pg');
+
+const pool = new Pool({
+    user: 'postgres',
+    host: 'localhost',
+    database: 'testdb',
+    password: '1234abcd',
+    port: 5432,
+})
+
+pool.on('error', (err, client) => {
+    console.error('Error:', err)
+})
+
+const query = `
+SELECT *
+FROM users
+`;
+
+(async () => {
+    try {
+        const client = await pool.connect();
+        const res = await client.query(query);
+
+        for (let row of res.rows) {
+            console.log(row)
+        }
+    } catch (err) {
+        console.error(err);
+    }
+})();
+
+/**
+Expected output:
+
+{
+  email: 'johndoe@gmail.com',
+  firstname: 'john',
+  lastname: 'doe',
+  age: 21
+}
+{
+  email: 'anna@gmail.com',
+  firstname: 'anna',
+  lastname: 'dias',
+  age: 35
+}
+ */

+ 34 - 0
pool-promise.js

@@ -0,0 +1,34 @@
+const { Pool } = require('pg');
+
+const pool = new Pool({
+    user: 'postgres',
+    host: 'localhost',
+    database: 'testdb',
+    password: '1234abcd',
+    port: 5432,
+})
+
+pool.on('error', (err, client) => {
+    console.error('Error:', err)
+})
+
+const query = `
+SELECT *
+FROM users
+`
+
+pool.connect()
+    .then((client) => {
+        client.query(query)
+            .then(res => {
+                for (let row of res.rows) {
+                    console.log(row)
+                }
+            })
+            .catch(err => {
+                console.error(err);
+            })
+    })
+    .catch(err => {
+        console.error(err);
+    })

+ 49 - 0
pool.js

@@ -0,0 +1,49 @@
+const { Pool } = require('pg');
+
+const pool = new Pool({
+    user: 'postgres',
+    host: 'localhost',
+    database: 'testdb',
+    password: '1234abcd',
+    port: 5432,
+})
+
+pool.on('error', (err, client) => {
+    console.error('Error:', err)
+})
+
+const query = `
+SELECT *
+FROM users
+`
+
+pool.connect((err, client, done) => {
+    if (err) throw err
+    client.query(query, (err, res) => {
+        done()
+        if (err) {
+            console.log(err.stack)
+        } else {
+            for (let row of res.rows) {
+                console.log(row)
+            }
+        }
+    })
+})
+
+/**
+Expected output:
+{
+  email: 'johndoe@gmail.com',
+  firstname: 'john',
+  lastname: 'doe',
+  age: 21
+}
+{
+  email: 'anna@gmail.com',
+  firstname: 'anna',
+  lastname: 'dias',
+  age: 35
+}
+...
+*/

+ 27 - 0
select-data.js

@@ -0,0 +1,27 @@
+const { Client } = require('pg')
+
+const client = new Client({
+    user: 'postgres',
+    host: 'localhost',
+    database: 'testdb',
+    password: '1234abcd',
+    port: 5432,
+});
+
+client.connect()
+
+const query = `
+SELECT *
+FROM users
+`
+
+client.query(query, (err, res) => {
+    if (err) {
+        console.error(err);
+        return;
+    }
+
+    for (let row of res.rows) {
+        console.log(row);
+    }
+});

+ 31 - 0
update-date.js

@@ -0,0 +1,31 @@
+const { Client } = require('pg')
+
+const client = new Client({
+    user: 'postgres',
+    host: 'localhost',
+    database: 'testdb',
+    password: '1234abcd',
+    port: 5432,
+});
+
+client.connect()
+
+const query = `
+UPDATE users
+SET age = 22
+WHERE email = 'johndoe@gmail.com'
+`
+
+client.query(query, (err, res) => {
+    if (err) {
+        console.error(err);
+        return;
+    }
+
+    if (err) {
+        console.error(err);
+        return;
+    }
+
+    console.log('Data update successful');
+});