Showing
2 changed files
with
120 additions
and
51 deletions
1 | { | 1 | { |
2 | "scripts": { | 2 | "scripts": { |
3 | "server": "cd server && nodemon server", | 3 | "server": "cd server && nodemon server", |
4 | - "client": "cd client && npm start --port", | 4 | + "client": "cd client && export PORT=8080 && set PORT=8080 && 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": { | ... | ... |
... | @@ -29,7 +29,7 @@ const postModel = mongoose.model('post', post); | ... | @@ -29,7 +29,7 @@ const postModel = mongoose.model('post', post); |
29 | 29 | ||
30 | function getCurrentDate(originDate) { | 30 | function getCurrentDate(originDate) { |
31 | var date; | 31 | var date; |
32 | - if(originDate == null) date = new Date(); | 32 | + if (originDate == null) date = new Date(); |
33 | else date = new Date(originDate); | 33 | else date = new Date(originDate); |
34 | var year = date.getFullYear().toString(); | 34 | var year = date.getFullYear().toString(); |
35 | 35 | ||
... | @@ -39,72 +39,141 @@ function getCurrentDate(originDate) { | ... | @@ -39,72 +39,141 @@ function getCurrentDate(originDate) { |
39 | var day = date.getDate(); | 39 | var day = date.getDate(); |
40 | day = day < 10 ? '0' + day.toString() : day.toString(); | 40 | day = day < 10 ? '0' + day.toString() : day.toString(); |
41 | 41 | ||
42 | - return year + '-'+ month + '-'+ day ; | 42 | + return year + '-' + month + '-' + day; |
43 | } | 43 | } |
44 | 44 | ||
45 | -router.get('/api/getList', async(req, res) => { | 45 | +function arrayEquals(a, b) { |
46 | - const today = getCurrentDate(); | 46 | + return Array.isArray(a) && |
47 | - var testDayPostList = await dayPostListModel.findOne({ date: today }); | 47 | + Array.isArray(b) && |
48 | - if (testDayPostList == null) testDayPostList = new dayPostListModel({ date: today, idArray: [] }); | 48 | + a.length === b.length && |
49 | - res.send(testDayPostList.idArray); | 49 | + a.every((val, index) => val === b[index]); |
50 | -}); | 50 | +} |
51 | 51 | ||
52 | -router.get('/api/getList/:date', async(req, res) => { | 52 | +router.get('/api/getList', async (req, res) => { // 오늘 게시물들의 아이디 표시 |
53 | - const today = getCurrentDate(req.params.date); | 53 | + try { |
54 | - var testDayPostList = await dayPostListModel.findOne({ date: today }); | 54 | + const today = getCurrentDate(); |
55 | - if (testDayPostList == null) testDayPostList = new dayPostListModel({ date: today, idArray: [] }); | 55 | + var testDayPostList = await dayPostListModel.findOne({ date: today }); |
56 | - res.send(testDayPostList.idArray); | 56 | + if (testDayPostList == null) testDayPostList = new dayPostListModel({ date: today, idArray: [] }); |
57 | + res.send(testDayPostList.idArray); | ||
58 | + } | ||
59 | + catch (err) { | ||
60 | + res.send(err.message); | ||
61 | + } | ||
57 | }); | 62 | }); |
58 | 63 | ||
59 | -router.get('/api/get', async(req, res) => { | 64 | +router.get('/api/getList/:date', async (req, res) => { // 특정 날자의 게시물들의 아이디 표시 |
60 | - const idArray = req.body.idArray; | 65 | + try { |
61 | - var resultArray = []; | 66 | + const today = getCurrentDate(req.params.date); |
62 | - for (const id of idArray){ | 67 | + var testDayPostList = await dayPostListModel.findOne({ date: today }); |
63 | - const onePost = await postModel.findById(id); | 68 | + if (testDayPostList == null) testDayPostList = new dayPostListModel({ date: today, idArray: [] }); |
64 | - var tempJSON = {}; | 69 | + res.send(testDayPostList.idArray); |
65 | - tempJSON.id = onePost.id; | 70 | + } |
66 | - tempJSON.title = onePost.title; | 71 | + catch (err) { |
67 | - tempJSON.content = onePost.content; | 72 | + res.send(err.message); |
68 | - tempJSON.content = tempJSON.content.replace(/(?:\r\n|\r|\n)/g, ''); | 73 | + } |
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 | }); | 74 | }); |
75 | 75 | ||
76 | -router.get('/api/get/:id', async(req, res) => { | 76 | +router.get('/api/get', async (req, res) => { // 특정 id(여러개)의 게시물 내용 요약 불러오기 |
77 | - const currentPost = await postModel.findById(req.params.id); | 77 | + try { |
78 | - res.send({ title: currentPost.title, content: currentPost.content }); | 78 | + const idArray = req.body.idArray; |
79 | + var resultArray = []; | ||
80 | + for (const id of idArray) { | ||
81 | + const onePost = await postModel.findById(id); | ||
82 | + var tempJSON = {}; | ||
83 | + tempJSON.id = onePost.id; | ||
84 | + tempJSON.title = onePost.title; | ||
85 | + tempJSON.content = onePost.content; | ||
86 | + tempJSON.content = tempJSON.content.replace(/(?:\r\n|\r|\n)/g, ''); | ||
87 | + const sliceLength = 10; | ||
88 | + if (tempJSON.content.length > sliceLength) tempJSON.content = tempJSON.content.slice(0, sliceLength) + "..."; | ||
89 | + resultArray.push(tempJSON); | ||
90 | + } | ||
91 | + res.send(resultArray); | ||
92 | + } | ||
93 | + catch (err) { | ||
94 | + res.send(err.message); | ||
95 | + } | ||
79 | }); | 96 | }); |
80 | 97 | ||
81 | -router.post('/api/isPassEqual', async(req, res) => { | 98 | +router.get('/api/get/:id', async (req, res) => { // 특정 id의 게시물 불러오기 |
82 | - const currentPost = await postModel.findById(req.body.id); | 99 | + try { |
83 | - if (currentPost.password == req.body.password) res.send("success"); | 100 | + const currentPost = await postModel.findById(req.params.id); |
84 | - else res.send("failed"); | 101 | + res.send({ title: currentPost.title, content: currentPost.content }); |
102 | + } | ||
103 | + catch (err) { | ||
104 | + res.send(err.message); | ||
105 | + } | ||
85 | }); | 106 | }); |
86 | 107 | ||
87 | -router.post('/api/postSave', async (req, res) => { | 108 | +router.post('/api/isPassEqual', async (req, res) => { // 암호가 같으면 success, 아니면 failed |
88 | - var isFirst = false; | 109 | + try { |
89 | - const today = getCurrentDate(); | 110 | + const currentPost = await postModel.findById(req.body.id); |
111 | + if (currentPost.password == req.body.password) res.send("success"); | ||
112 | + else res.send("failed"); | ||
113 | + } | ||
114 | + catch (err) { | ||
115 | + res.send("failed"); | ||
116 | + } | ||
117 | +}); | ||
90 | 118 | ||
91 | - var testDayPostList = await dayPostListModel.findOne({ date: today }); | 119 | +router.post('/api/postSave', async (req, res) => { // 오늘 게시물 작성 |
92 | - if (testDayPostList == null) { | 120 | + try { |
93 | - testDayPostList = new dayPostListModel({ date: today, idArray: [] }); | 121 | + var isFirst = false; |
94 | - isFirst = true; | 122 | + const today = getCurrentDate(); |
123 | + | ||
124 | + var testDayPostList = await dayPostListModel.findOne({ date: today }); | ||
125 | + if (testDayPostList == null) { | ||
126 | + testDayPostList = new dayPostListModel({ date: today, idArray: [] }); | ||
127 | + isFirst = true; | ||
128 | + } | ||
129 | + var postListArr = testDayPostList.idArray; | ||
130 | + var newPost = new postModel({ date: today, title: req.body.title, content: req.body.content, password: req.body.password }); | ||
131 | + var newPostData = await newPost.save(); | ||
132 | + postListArr.push(newPostData._id.toString()); | ||
133 | + | ||
134 | + if (isFirst) await testDayPostList.save(); | ||
135 | + else await dayPostListModel.updateOne({ date: today }, { idArray: postListArr }); | ||
136 | + | ||
137 | + res.send("success"); | ||
95 | } | 138 | } |
96 | - var postListArr = testDayPostList.idArray; | 139 | + catch (err) { |
97 | - var newPost = new postModel({ date: today, title: req.body.title, content: req.body.content, password: req.body.password }); | 140 | + res.send(err.message); |
98 | - var newPostData = await newPost.save(); | 141 | + } |
99 | - postListArr.push(newPostData._id.toString()); | 142 | +}); |
100 | 143 | ||
101 | - if (isFirst) await testDayPostList.save(); | 144 | +router.put('/api/edit/:id', async (req, res) => { // 게시물 수정 |
102 | - else await dayPostListModel.updateOne({ date: today }, { idArray: postListArr }); | 145 | + try { |
146 | + const id = req.params.id; | ||
147 | + const title = req.body.title; | ||
148 | + const content = req.body.content; | ||
149 | + await postModel.findByIdAndUpdate(id, { title: title, content: content }); | ||
150 | + res.send("success"); | ||
151 | + } | ||
152 | + catch (err) { | ||
153 | + res.send(err.message); | ||
154 | + } | ||
155 | +}); | ||
103 | 156 | ||
104 | - res.send(newPostData); | 157 | +router.delete('/api/delete/:id', async (req, res) => { // 게시물 삭제 |
158 | + try { | ||
159 | + const id = req.params.id; | ||
160 | + const list = await dayPostListModel.find(); | ||
161 | + for (const dayList of list) { | ||
162 | + var newArray = dayList.idArray.filter((data)=>{return data != id;}) | ||
163 | + if(!arrayEquals(dayList.idArray, newArray)){ | ||
164 | + await dayPostListModel.findByIdAndUpdate(dayList._id.toString(), {idArray: newArray}); | ||
165 | + } | ||
166 | + } | ||
167 | + await postModel.findByIdAndDelete(id); | ||
168 | + res.send("success"); | ||
169 | + } | ||
170 | + catch (err) { | ||
171 | + res.send(err.message); | ||
172 | + } | ||
105 | }); | 173 | }); |
106 | 174 | ||
107 | -// 게시물 저장에 성공 실패 메시지만 표시, 게시물 수정, 삭제 추가예정 --------------------------------------------------------------------------------------------------------------------------------------- | 175 | +// 대기시간 관련 디비 수정 부분 추가 ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
176 | +// 학식 일주일치 불러오는 부분 추가 ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
108 | 177 | ||
109 | // router.get('/api/testSave', async (req, res) => { | 178 | // router.get('/api/testSave', async (req, res) => { |
110 | // var isFirst = false; | 179 | // var isFirst = false; | ... | ... |
-
Please register or login to post a comment