import express from 'express'; import multer from 'multer'; import path from 'path' import moment from 'moment' import userService from '../user/userService.js'; import articleService from './articleService.js'; const __dirname = path.resolve(); export const router = express.Router(); const upload = multer({ storage: multer.diskStorage({ // 저장한공간 정보 : 하드디스크에 저장 destination(req, file, done) { // 저장 위치 done(null, 'public/uploads/'); // uploads라는 폴더 안에 저장 }, filename(req, file, done) { // 파일명을 어떤 이름으로 올릴지 const ext = path.extname(file.originalname); // 파일의 확장자 done(null, path.basename(file.originalname, ext) + Date.now() + ext); // 파일이름 + 날짜 + 확장자 이름으로 저장 } }), limits: { fileSize: 5 * 1024 * 1024 } // 5메가로 용량 제한 }); router.post("/", upload.array("img"), async function (req, res, next) { if (!req.session.sessionid) { console.log("No session error"); return; } console.log("POST /article"); const inputTitle = req.body.title const inputContent = req.body.content const inputImage = req.files.map(el => el.path); const useremail = req.session.sessionid.email const author = await userService.findUserByEmail(useremail); const inputkeyword = req.body.keyword const inputlat = req.body.latitude const inputlng = req.body.longitude await articleService.createArticle({ title: inputTitle, content: inputContent, imageUrls: inputImage, author: author, keyword: inputkeyword, latitude: inputlat, longitude: inputlng, comments: [], likes: [], }); console.log('saved.') res.send(); }); router.get("/", async (req, res) => { console.log(path.join(process.cwd(), '/public')) if (!req.session.sessionid) { console.log("No session"); } const articles = await articleService.findAllArticle(); articles.forEach((article) => { article.imageUrls.forEach( (urls) => { try { //res.sendFile(path.join(__dirname, urls)); } catch (err) { console.log(err) } }); }); res.send(JSON.stringify(articles)); }); router.get("/:id", async (req, res) => { if (!req.session.sessionid) { console.log("No session"); } const articles = await articleService.findArticleById(req.params.id); res.send(JSON.stringify(articles)); }); router.post("/:id/comment", async (req, res) => { if (!req.session.sessionid) { console.log("No session"); } const user = await userService.findUserByEmail(req.session.sessionid.email); const data = { content: req.body.content, author: user._id } const articles = await articleService.createComment(req.params.id, data); res.send(JSON.stringify(articles)); }) router.delete("/:articleid/comment/:commentid", async (req, res) => { if (!req.session.sessionid) { console.log("No session"); } const articles = await articleService.deleteComment(req.params.articleid, req.params.commentid); res.send(JSON.stringify(articles)); }); router.put("/:id/like", async (req, res) => { if (!req.session.sessionid) { console.log("No session"); } const user = await userService.findUserByEmail(req.session.sessionid.email); const articles = await articleService.setLike(req.params.id, user._id) res.send(JSON.stringify(articles)); }); export default router;