-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver_withoutAI.js
More file actions
76 lines (66 loc) · 2.6 KB
/
server_withoutAI.js
File metadata and controls
76 lines (66 loc) · 2.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// server.js
// es-module -> import, commonjs -> require
//일종의 함수
const express = require("express"); // express 안에 있는 이미 구현되어 있는 코드들을 express 객체 형태로 불러오겠다
const cors = require("cors");
//설치한 의존성 패키지 cors 불러오기
const dotenv = require("dotenv");
const { createClient } = require("@supabase/supabase-js"); //구조분해할당
dotenv.config(); //.env -> KEY -> SUPABASE_KEY
//NODE -> process.env(환경변수) // cf. env file
// const supabaseKey = process.env.SUPABASE_KEY;
// const supabaseUrl = process.env.SUPABASE_URL;
const { SUPABASE_KEY: supabaseKey, SUPABASE_URL: supabaseUrl } = process.env;
console.log("supabaseKey", supabaseKey);
console.log("supabaseUrl", supabaseUrl); // 확인 (npm run dev)
const supabase = createClient(supabaseUrl, supabaseKey);
const app = express(); // () -> 호출해서 사용하겠다
// 포트 -> 컴퓨터 서비스가 1개만 있는게 아님. email, db, server 1, server 2...
// 1 ~ 2xxxx. => 이 번호로 오세요...
const port = 3000; // cra. next -> express. / 5173.
// localhost -> 3000. / 5500? <-> 구분해주는 의미.
//CORS 해결을 위한 미들웨어 적용
//app.get 앞에서 사용
app.use(cors()); // 모든 출처에 대한 허용
app.use(express.json());
// (보안적으로 바람직하지 X)
// get, post...
// app.방식(접속경로, 핸들러)
// localhost:3000/
// '/'는 아무것도 없는 것을 의미
// app.get("/", (req, res) => {
// // req -> request -> 전달 받은 데이터나 요청사항
// // res -> response -> 응답할 내용/방식을 담은 객체
// res.send("bye");
// });
app.get("/plans", async (req, res) => {
const { data, error } = await supabase.from("tour_plan").select("*");
if (error) {
return res.status(400).json({ error: error.message });
}
res.json(data);
});
app.post("/plans", async (req, res) => {
const plan = req.body;
//supabase는 promise
const { data, error } = await supabase.from("tour_plan").insert(plan);
if (error) {
return res.status(400).json({ error: error.message });
}
res.status(201).json(data);
});
app.delete("/plans", async (req, res) => {
const { planId } = req.body;
const { error } = await supabase
.from("tour_plan") // table
.delete() // 삭제
.eq("id", planId); // eq = equal = id가 planId
if (error) {
return res.status(400).json({ error: error.message });
}
res.status(204).json(); // noContent
});
// DOM listener / server '대기' -> 특정한 요청. -> 응답.
app.listen(port, () => {
console.log(`서버가 ${port}번 포트로 실행 중입니다.`);
});