최은석
...@@ -20,4 +20,103 @@ ...@@ -20,4 +20,103 @@
20 * 카카오톡의 반응 기능이나 인스타의 좋아요 처럼 게시물에 이모티콘을 사용자가 표시하는 기능 20 * 카카오톡의 반응 기능이나 인스타의 좋아요 처럼 게시물에 이모티콘을 사용자가 표시하는 기능
21 ```한 사용자가 여러번 남기는 것을 막아야 해서 로그인 기능 고려 필요``` 21 ```한 사용자가 여러번 남기는 것을 막아야 해서 로그인 기능 고려 필요```
22 * 게시물 작성을 유도하기 위해 포인트 적립을 통해 랭킹 기능 고려 22 * 게시물 작성을 유도하기 위해 포인트 적립을 통해 랭킹 기능 고려
23 -* 작성된 글을 보기 쉽도록 게시글을 검색하는 기능
...\ No newline at end of file ...\ No newline at end of file
23 +* 작성된 글을 보기 쉽도록 게시글을 검색하는 기능
24 +
25 +## BACK
26 +### /api/getList
27 +#### GET호출
28 +> response
29 +> ```
30 +> ["게시물 id1", "게시물 id2", "게시물 id3"]
31 +>```
32 +>> 오늘 게시물들의 아이디 표시
33 +
34 +-------------
35 +### /api/getList/:date
36 +#### GET호출
37 +> response
38 +> ```
39 +> ["게시물 id1", "게시물 id2", "게시물 id3"]
40 +>```
41 +>> 특정 날자의 게시물들의 아이디 표시
42 +
43 +-------------
44 +### /api/get
45 +#### GET호출
46 +> request(body)
47 +> ```
48 +> {
49 +> "idArray": ["게시물 id1", "게시물 id2", "게시물 id3"]
50 +> }
51 +> ```
52 +
53 +> response
54 +> ```
55 +> [
56 +> {
57 +> "id": "게시물 id1",
58 +> "title": "제목1",
59 +> "content": "내용1"
60 +> },
61 +> {
62 +> "id": "게시물 id2",
63 +> "title": "제목2",
64 +> "content": "내용2"
65 +> },
66 +> {
67 +> "id": "게시물 id3",
68 +> "title": "제목3",
69 +> "content": "이 것은 긴 내용이..."
70 +> }
71 +> ]
72 +> ```
73 +>> 특정 id(여러개)의 게시물 내용 요약 불러오기
74 +
75 +-------------
76 +### /api/get/:id
77 +#### GET호출
78 +> response
79 +> ```
80 +> {
81 +> "title": "제목",
82 +> "content": "내용"
83 +> }
84 +>```
85 +>> 특정 id의 게시물 불러오기
86 +
87 +-------------
88 +### /api/isPassEqual
89 +#### POST호출
90 +> request(body)
91 +> ```
92 +> {
93 +> "id":"게시물 id",
94 +> "password":"사용자가 입력한 암호"
95 +> }
96 +> ```
97 +
98 +> response
99 +> ```
100 +> success
101 +> ```
102 +> or
103 +> ```
104 +> failed
105 +> ```
106 +>
107 +>> 암호가 같으면 success, 아니면 failed
108 +
109 +-------------
110 +### /api/postSave
111 +#### POST호출
112 +> request(body)
113 +> ```
114 +> {
115 +> "title":"제목",
116 +> "content":"게시물 내용",
117 +> "password":"암호"
118 +> }
119 +> ```
120 +>> 오늘 게시물 작성
121 +>>> response 수정예정
122 +>>>>>>> ea6cadae0f258eb9d8abc6e597913cf5bda4b9fd
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
6 "@testing-library/jest-dom": "^5.16.4", 6 "@testing-library/jest-dom": "^5.16.4",
7 "@testing-library/react": "^13.3.0", 7 "@testing-library/react": "^13.3.0",
8 "@testing-library/user-event": "^13.5.0", 8 "@testing-library/user-event": "^13.5.0",
9 + "axios": "^0.27.2",
9 "react": "^18.1.0", 10 "react": "^18.1.0",
10 "react-dom": "^18.1.0", 11 "react-dom": "^18.1.0",
11 "react-scripts": "5.0.1", 12 "react-scripts": "5.0.1",
......
This diff is collapsed. Click to expand it.
1 { 1 {
2 "scripts": { 2 "scripts": {
3 "server": "cd server && nodemon server", 3 "server": "cd server && nodemon server",
4 - "client": "cd client && npm start", 4 + "client": "cd client && npm start --port",
5 "start": "concurrently --kill-others-on-fail \"npm run server\" \"npm run client\"" 5 "start": "concurrently --kill-others-on-fail \"npm run server\" \"npm run client\""
6 }, 6 },
7 "dependencies": { 7 "dependencies": {
8 "axios": "^0.27.2", 8 "axios": "^0.27.2",
9 + "body-parser": "^1.20.0",
9 "concurrently": "^7.2.1", 10 "concurrently": "^7.2.1",
10 "express": "^4.18.1", 11 "express": "^4.18.1",
11 "http-proxy-middleware": "^2.0.6", 12 "http-proxy-middleware": "^2.0.6",
13 + "mongoose": "^6.3.4",
12 "nodemon": "^2.0.16" 14 "nodemon": "^2.0.16"
13 } 15 }
14 } 16 }
......
1 +const express = require('express');
2 +const router = express.Router();
3 +const mongoose = require('mongoose')
4 +
5 +mongoose.connect('mongodb+srv://choieunseok:uA3mhjPcB3DwsuuD@cluster0.2gsua4u.mongodb.net/?retryWrites=true&w=majority');
6 +
7 +const db = mongoose.connection
8 +db.on('error', console.error)
9 +db.once('open', () => {
10 + console.log('Connected to mongodb Server')
11 +});
12 +
13 +const dayPostList = mongoose.Schema({
14 + date: 'string',
15 + idArray: [{ type: String }]
16 +});
17 +const dayPostListModel = mongoose.model('dayPostList', dayPostList);
18 +const post = mongoose.Schema({
19 + date: 'string',
20 + title: 'string',
21 + content: 'string',
22 + password: 'string'
23 +});
24 +const postModel = mongoose.model('post', post);
25 +
26 +// router.get('/api', (req, res) => {
27 +// res.send({ test: "hi" });
28 +// });
29 +
30 +function getCurrentDate(originDate) {
31 + var date;
32 + if(originDate == null) date = new Date();
33 + else date = new Date(originDate);
34 + var year = date.getFullYear().toString();
35 +
36 + var month = date.getMonth() + 1;
37 + month = month < 10 ? '0' + month.toString() : month.toString();
38 +
39 + var day = date.getDate();
40 + day = day < 10 ? '0' + day.toString() : day.toString();
41 +
42 + return year + '-'+ month + '-'+ day ;
43 +}
44 +
45 +router.get('/api/getList', async(req, res) => {
46 + const today = getCurrentDate();
47 + var testDayPostList = await dayPostListModel.findOne({ date: today });
48 + if (testDayPostList == null) testDayPostList = new dayPostListModel({ date: today, idArray: [] });
49 + res.send(testDayPostList.idArray);
50 +});
51 +
52 +router.get('/api/getList/:date', async(req, res) => {
53 + const today = getCurrentDate(req.params.date);
54 + var testDayPostList = await dayPostListModel.findOne({ date: today });
55 + if (testDayPostList == null) testDayPostList = new dayPostListModel({ date: today, idArray: [] });
56 + res.send(testDayPostList.idArray);
57 +});
58 +
59 +router.get('/api/get', async(req, res) => {
60 + const idArray = req.body.idArray;
61 + var resultArray = [];
62 + for (const id of idArray){
63 + const onePost = await postModel.findById(id);
64 + var tempJSON = {};
65 + tempJSON.id = onePost.id;
66 + tempJSON.title = onePost.title;
67 + tempJSON.content = onePost.content;
68 + tempJSON.content = tempJSON.content.replace(/(?:\r\n|\r|\n)/g, '');
69 + const sliceLength = 10;
70 + if(tempJSON.content.length > sliceLength) tempJSON.content = tempJSON.content.slice(0,sliceLength) + "...";
71 + resultArray.push(tempJSON);
72 + }
73 + res.send(resultArray);
74 +});
75 +
76 +router.get('/api/get/:id', async(req, res) => {
77 + const currentPost = await postModel.findById(req.params.id);
78 + res.send({ title: currentPost.title, content: currentPost.content });
79 +});
80 +
81 +router.post('/api/isPassEqual', async(req, res) => {
82 + const currentPost = await postModel.findById(req.body.id);
83 + if (currentPost.password == req.body.password) res.send("success");
84 + else res.send("failed");
85 +});
86 +
87 +router.post('/api/postSave', async (req, res) => {
88 + var isFirst = false;
89 + const today = getCurrentDate();
90 +
91 + var testDayPostList = await dayPostListModel.findOne({ date: today });
92 + if (testDayPostList == null) {
93 + testDayPostList = new dayPostListModel({ date: today, idArray: [] });
94 + isFirst = true;
95 + }
96 + var postListArr = testDayPostList.idArray;
97 + var newPost = new postModel({ date: today, title: req.body.title, content: req.body.content, password: req.body.password });
98 + var newPostData = await newPost.save();
99 + postListArr.push(newPostData._id.toString());
100 +
101 + if (isFirst) await testDayPostList.save();
102 + else await dayPostListModel.updateOne({ date: today }, { idArray: postListArr });
103 +
104 + res.send(newPostData);
105 +});
106 +
107 +// 게시물 저장에 성공 실패 메시지만 표시, 게시물 수정, 삭제 추가예정 ---------------------------------------------------------------------------------------------------------------------------------------
108 +
109 +// router.get('/api/testSave', async (req, res) => {
110 +// var isFirst = false;
111 +
112 +// var testDayPostList = await dayPostListModel.findOne({ date: '2022-05-30' });
113 +// if (testDayPostList == null) {
114 +// testDayPostList = new dayPostListModel({ date: '2022-05-30', idArray: [] });
115 +// isFirst = true;
116 +// }
117 +// var postListArr = testDayPostList.idArray;
118 +
119 +// var newPost = new postModel({ date: '2022-05-30', title: '테스트 제목', content: '테스트 내용', password: 'password' });
120 +// var newPostData = await newPost.save();
121 +// postListArr.push(newPostData._id.toString());
122 +
123 +// if (isFirst) await testDayPostList.save();
124 +// else await dayPostListModel.updateOne({ date: '2022-05-30' }, { idArray: postListArr });
125 +
126 +// res.send("test");
127 +// });
128 +
129 +module.exports = router;
130 +
1 -const express = require('express');
2 -const router = express.Router();
3 -
4 -router.get('/api', (req, res)=>{
5 - res.send({ test: "hi"});
6 -});
7 -
8 -module.exports = router;
...\ No newline at end of file ...\ No newline at end of file
1 const express = require('express'); 1 const express = require('express');
2 const app = express(); 2 const app = express();
3 -const test = require('.//Router/test'); 3 +const api = require('./Router/api');
4 +let bodyParser = require('body-parser');
5 +app.use(bodyParser.urlencoded({ extended: false }));
6 +app.use(bodyParser.json());
4 7
5 -app.use('/', test); 8 +app.use('/', api);
6 9
7 -const port=23023;
8 -app.listen(port, ()=>{console.log(`Listening on port ${port}`)});
...\ No newline at end of file ...\ No newline at end of file
10 +const port = 23023;
11 +app.listen(port, () => { console.log(`Listening on port ${port}`) });
...\ No newline at end of file ...\ No newline at end of file
......