Postgres, Express, Node (PEN)
| Created | |
|---|---|
| Type | Stack |
| Language | Javascript |
| Last Edit |
Server - Node
npm init
npm i express pg corsindex.js
const express = require("express");
const cors = require("cors");
const app = express();
app.use(cors());
app.use(express.json());
app.listen(8000, () => {
console.log("Server is running on port 8000");
});Database - Postgres
CREATE database pern_todo;
CREATE TABLE todo (
todo_id SERIAL PRIMARY KEY,
description VARCHAR ( 255 )
);DB Setup
db.js
const Pool = require("pg").Pool;
const pool = new Pool({
user: "postgres",
password: "admin",
host: "localhost",
port: 5432,
database: "pern_todo",
});
module.exports = pool;Queries
UUID as ID
CREATE TEMP TABLE IF NOT EXISTS users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid()
);Requests
Post Request
app.js
const pool = require("./db");
app.post("/todos", async (req, res) => {
try {
const { description } = req.body;
const newTodo = await pool.query(
"INSERT INTO todo (description) VALUES($1) RETURNING *",
[description]
);
res.json(newTodo.rows[0]);
} catch (error) {
console.error(error.message);
}
});Get Request
Get All
app.get("/todos", async (req, res) => {
try {
const allTodos = await pool.query("SELECT * FROM todo");
res.json(allTodos.rows);
} catch (error) {
console.error(error.message);
}
});Get By Params
app.get("/todos/:id", async (req, res) => {
try {
const { id } = req.params;
const todo = await pool.query("SELECT * FROM todo WHERE todo_id = $1", [
id,
]);
res.json(todo.rows[0]);
} catch (error) {
console.error(error.message);
}
});Update Request
app.put("/todos/:id", async (req, res) => {
try {
const { id } = req.params;
const { description } = req.body;
const updateTodo = await pool.query(
"UPDATE todo SET description = $1 WHERE todo_id = $2 RETURNING *",
[description, id]
);
res.json(updateTodo.rows[0]);
} catch (error) {
console.error(error.message);
}
});Delete Request
app.delete("/todos/:id", async (req, res) => {
try {
const { id } = req.params;
const deleteTodo = await pool.query("DELETE FROM todo WHERE todo_id = $1", [
id,
]);
res.json({ success: true });
} catch (error) {
console.error(error.message);
}
});Advanced Requests
