Created
January 15, 2021 16:07
-
-
Save cartorjo/f45c9c1a369f0ded0f39ffdfac579c68 to your computer and use it in GitHub Desktop.
Establishes a connection to a PostgreSQL database using credentials and handles create and read operations on the database
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Node-postgres, supports for callbacks, promises, async/await, | |
const pg = require("pg"); | |
// Parse connectionString to get username, password, database name, server, port,... | |
const parse = require('pg-connection-string').parse; | |
// Our config details | |
let config = parse(connectionString); | |
// Set up a new client using our config details | |
let client = new pg.Client(config); | |
client.connect(function (err) { | |
if (err) { | |
console.log(err); | |
process.exit(1); | |
} else { | |
client.query( | |
"CREATE TABLE IF NOT EXISTS objects (object varchar(256) NOT NULL, definition varchar(256) NOT NULL)", | |
function (err, result) { | |
if (err) { | |
console.log(err); | |
} | |
} | |
); | |
} | |
}); | |
function addObject(object, definition) { | |
return new Promise(function (resolve, reject) { | |
let queryText = "INSERT INTO objects(object,definition) VALUES($1, $2)"; | |
client.query( | |
queryText, [object, definition], | |
function (error, result) { | |
if (error) { | |
reject(error); | |
} else { | |
resolve(result); | |
} | |
} | |
); | |
}); | |
} | |
function getObject() { | |
return new Promise(function (resolve, reject) { | |
client.query("SELECT * FROM objects ORDER BY object ASC", function ( | |
err, | |
result | |
) { | |
if (err) { | |
reject(err); | |
} else { | |
resolve(result.rows); | |
} | |
}); | |
}); | |
} | |
// Send the data to the addObject function and send a response if successful | |
app.put("/objects", function (request, response) { | |
addObject(request.body.object, request.body.definition) | |
.then(function (resp) { | |
response.send(resp); | |
}) | |
.catch(function (err) { | |
response.status(500).send(err); | |
}); | |
}); | |
// Use the getObject function to get a list of objects and definitions from the database | |
app.get("/objects", function (request, response) { | |
getObject() | |
.then(function (objects) { | |
response.send(objects); | |
}) | |
.catch(function (err) { | |
response.status(500).send(err); | |
}); | |
}); | |
// Listen for a connection | |
app.listen(port, function () { | |
console.log("Server is listening on port " + port); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment