냥냥's 2021. 9. 24. 22:39

휴 기본 과제를 끝냈다
이번엔 개인과제라서 엄청 마음 편하게 할 수 있었던 것 같다.

https://github.com/shinsw627/basicCrud.git

다음 주 수요일 까지라서 굉장히 시간이 여유롭지만 빨리 끝내고 다른 공부를 하고 싶어서 후다닥 정리해버렸다.
완전히 기능 중심으로만 구현 하였고(CRUD만...) 디자인은 전혀 신경쓰지 않았다.

이런식으루 간단히 조회되고
글의 제목이나 내용을 클릭하면

이런식으로 detail페이지로 이동한다.
수정하기를 누르면 수정페이지가 나오고 원래 글의 내용이 적혀있고 글에 설정했던 비밀번호를 입력해서 수정할 수 있다.

삭제하기를 눌렀을 경우

간단한 모달 창이뜨고 비밀번호를 입력해서 삭제할 수 있다.

const express = require('express')
const app = express()
const port = 3000

app.use(express.urlencoded({extended: false}))
app.use(express.json())

const connect = require('./schemas');
connect();

const postsRouter = require('./routers/posts')
app.use('/api', postsRouter)

app.use(express.static('public'));


app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');

// app.use((req, res, next) => {  미들웨어     console.log(req);     next();   });

app.get('/hi', (req, res) => {
    res.send('Hi. This is express router')
})

app.get('/', (req, res) => {
    res.render('index')
})

app.get('/write',(req, res) => {
    res.render('write')
  })

app.get('/detail', (req, res) => {
let postId = req.query.name;
res.render('detail', {postId});
})
app.get('/rewrite', (req, res) => {
let postId = req.query.name;
res.render('rewrite', {postId});
})

app.listen(port, () => {
    console.log(`listening at http://localhost:${port}`)
})
const express = require("express");
const Posts = require("../schemas/posts");

const router = express.Router();

router.get("/posts", async (req, res, next) => {
  try {
    
    const posts = await Posts.find({}).sort("-postId");
    res.json({ posts: posts });
  } catch (err) {
    console.error(err);
    next(err);
  }
});

router.get("/posts/:postId", async (req, res) => {
  const { postId } = req.params;
  posts = await Posts.findOne({ postId: postId });
  res.json({ posts: posts });
});

//글 작성
router.post('/write', async (req, res) => {
    const { postId, userName, title, content, contentPw, date } = req.body;
    await Posts.create({ postId, userName, title, content, contentPw, date });
    
    res.send({ result: "success" });
  });

//글 수정 PATCH
router.patch("/posts/:postId", async (req, res) => {
  console.log(req.params)
  const { postId } = req.params;
  const { title, content } = req.body;
  const loadpost = await Posts.find({ postId });
  console.log(loadpost)
  if (loadpost.length > 0) {
      await Posts.updateOne({ postId } , { $set: { title, content }})
  }
  res.send({ result: "success" });
})

//글 삭제 DELETE
router.delete("/posts/:postId", async (req, res) => {
  const {postId } = req.params

  const deletePost = await Posts.find({ postId });
  if(deletePost.length > 0){
      await Posts.deleteOne({ postId });
  }
  res.send({result: "success" });
})

module.exports = router;



간단한crud여서 어렵진 않았다.
빨리 심화수업을 듣고 싶은데 너무 아쉽다.
좀 더 공부할 것을 찾아봐야겠다.

실전프로젝트 음악도 빨리 준비 할 것!

 

오히려 배포하는 데에 오류가 생겼어서 간단히 명령어를 정리해 보았다.

 

sudo iptables -t nat -L //현재 ip설정 확인

sudo iptables -t nat -D PREROUTING 1 //설정된거 젤위에꺼 하나 지우기(기존 5000포트가 80포트로 접속하던거를 지우기)

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000 //80포트 3000으로 바꾸기


sudo apt-get install -y nodejs //node 설치

 

pm2 설치 관련
sudo -s //관리자 권한 취득

npm install -g pm2 //pm2 설치

pm2 start 파일이름 //pm2로 파일 실행

pm2 stop 파일이름 //pm2 파일 종료

알고리즘 시간!

한 개의 문자열을 입력받아 해당 문자열에 알파벳 대문자가 몇 개 있는지 알아내는 프로그램
을 작성하세요.
▣ 입력설명
첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다.
▣ 출력설명
첫 줄에 대문자의 개수를 출력한다.
▣ 입력예제 1
KoreaTimeGood
▣ 출력예제 1
3

풀이

toUpperCase()를 이용해서 같은 원본과 비교하는 형태로 풀면된다. 쉽다!!

function solution(str){
    let answer=0;
    for(let a of str) {
        if(a == a.toUpperCase()){
            answer++;
        }
       
    }
    return answer
}
let str="KoreaTimeGood"
console.log(solution(str))

 

대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자로 모두 통일하여 문자열을 출력
하는 프로그램을 작성하세요.
▣ 입력설명
첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다.
▣ 출력설명
첫 줄에 대문자로 통일된 문자열이 출력된다.
▣ 입력예제 1
ItisTimeToStudy
▣ 출력예제 1
ITISTIMETOSTUDY

풀이

아까랑 거의 똑같은 문제다 반대로 소문자로 만들어서 비교하고 같으면 대문자로 전환해서 answer에 더하고
다르면 그냥 answer에 더했다.

function solution(str){
    let answer="";
    for(let a of str) {
        if(a === a.toLowerCase()){
            answer += a.toUpperCase();
        } else {
            answer += a;
        }
       
    }
    return answer
}
let str="KoreaTimeGood"
console.log(solution(str))

 

다른 풀이인 아스키코드로 하는 방법도 있어서 가져와봤다.

function solution(str){
    let answer="";
    for(let a of str) {
        if(a == a.toLowerCase()){
            answer += a.toUpperCase();
        } else {
            answer += a;
        }
       
    }
    return answer
}
let str="KoreaTimeGood"
console.log(solution(str))

아스키코드 

중요한건 65부터 90 까지가 대문자이고 
97부터 122까지가 소문자 이다. 
대문자에서 32를 더하면 소문자가 된다!