팀프로젝트/SNS(키보드워리어)

    [키보드워리어] textarea 공백, 줄바꿈

    게시글을 쓸때 textarea의 value를 그대로 데이터베이스에 넣고 사용하게 되면 띄어쓰기와 개행(줄바꿈)이 제대로 먹지 않았고 ejs로 데이터를 받을때 에러가 났다. 이를 해결하기 위해서 textarea를 input으로 바꾸고 onchange 이벤트를 이용해 띄어쓰기는 줄바꿈은 \n 으로 처리했다. 글쓰기와 보기 둘은 해결했지만 수정하기에서 또 문제가 됐다. 글을 수정할때에는 같은 문자들을 innerHTML로 넣을수가 없어서 input이 아닌 div에 contenteditable속성을 넣어서 안의 내용을 수정할수 있게 했다. 데이터베이스를 보낼때에는 ajax로 div에 있는 부분만 따로 작동하게 했다.

    [키보드워리어] table 생성 오류

    sequelize문으로 해당 테이블이 없다면 테이블을 만들라는 코드를 짰다. 하지만 위와같이 테이블이 없다는 에러를 마주했다. 이유는 다른 함수에서 mainposts를 require해서 사용했고 그 함수를 main.html 에서 사용했다. 서버를 키고 홈페이지에 들어가면 제일 먼저 나오는 화면인 main.html이 열리면서 콜스택에 해당 function이 들어가는 도중에 위와같은 에러가 난것 같다. 그래서 그 function에 mainposts 테이블을 만들라는 코드를 넣으니 해결됬다. 하지만 이 방법으로 mainposts를 만들면 외래키 설정도 여기서 해줘야 한다는걸 나중에 외래키 설정을 해보며 알았다. 그래서 이 function을 지워버렸다.

    [키보드워리어] Json 객체 파싱 main.html

    서버에서 sequelize를 통해 mySQL에 있는 데이터값을 findAll로 불러오고 객채형태인 데이터를 그대로 ejs로 클라이언트에 보냈다. 그리고 ejs문법을 써서 클라이언트 html에서 받아오려고 했지만 되지 않았다. 이유는 ejs로 객체를 받으면 그 데이터가 JSON형식으로 되어있기 때문에 [Object Object] 처럼 나타난다. 이를 해결하기 위해 다시 구글링을 해봤고 이는 그 데이터 자체를 JSON.stringify()로 파싱해주면 객체값이 나왔다. 하지만 이것만으로는 html의 script 에서 바로 사용할수 없었다. 원래 " 로 돼있어야 할 곳들이 " 로 바뀌어 있었다. replaceAll 로 " 를 " 로 바꿔준후 JSON.parse()로 자바스크립트 언어로 파싱한 후 사용할수 있었..

    [키보드워리어] async await promise 동기 처리

    DB에서 값을 받아오는데에는 시간이 필요해서 동기처리가 굉장히 중요했다. sequelize 에서 값을 받아올때는 앞에 await만 붙여주면 됬다. 그래서 다른 것들도 동기처리를 하기 위해서 await만 붙여주면 끝나는줄 알았지만 아니었다. 구글링을 해서 찾아보니 await 뒤에는 promise만 쓸수 있었고 sequelize는 promise가 내장되 있었기 때문에 await가 가능했던 것이다. forEach문을 promise로 만들어봤지만 동기처리가 되지 않아서 구글링을 해봤다. 기존 for문과 forEach의 차이는 동기, 비동기 차이였다. for문은 동기처리로 모든 for문이 되기전까지 기다린 반면에 forEach는 비동기처리로 진행한다고 한다. 결과 forEach 말고 for of문을 썼다. 이 문..

    [키보드워리어] image 서버에 올리기

    image를 서버에 올리기 위해 구글링을 해봤는데 대부분 formData를 사용해서 옮겼다. 그래서 formData가 필수적으로 필요한줄 알고 공부를 하고봤더니 form태그로 보내면 multer를 이용해서 받을수 있는것을 확인했다. 구글에서 multer를 쓴 예제들을 보며 이미지 1개를 올리는것 까지는 쉽게 구현을 했다. 문제는 여러개의 이미지를 올리는 것이었다. input 태그에서 여러개를 올릴수 있게 multiple 속성을 추가해봤지만 되지 않았다. 내가 원하는건 한번 이미지를 올리고 그 input태그를 사용하여 다시 이미지를 올리면 총 2개의 이미지가 input 에 담기길 원했지만 그러지 않았다. 그래서 input 태그를 5개 배치하였다. multer에서 받을때도 미들웨어로 field로 받아서 가공..

    [키보드워리어] sequelize foreign key 오류

    mysql 은 RDS로 관계형 데이터베이스이다. 그렇기 때문에 참조하는 외래키를 만들수가 있다. 나는 이 외래키를 만들다가 오류와 부딪혔고 상당한 시간을 보냈다. 이유는 참조 대상이었다. 외래키를 쓰기전 외래키를 찾아보니 부모와 자식처럼 연결시켜주면서 자식이 부모의 값을 참조하여 값을 따로 저장시키는게 아닌 외래키로 설정된 값은 부모의 값을 참조하여 가져오기 때문에 속도적인 측면에서 좋고 부모의 테이블을 쉽게 접근할수 있다고 찾았다. 그래서 나는 최대한 많이 외래키를 적용하는게 좋다고 생각했다. 그렇게 겹치는 부분을 최대한 외래키로 잡아준후 적용했다. 결과는 외래키 참조 오류가 떴다. 문제는 외래키의 값은 동일해야 된다는 것이었다. 나는 처음 외래키 설정코드의 문제인줄알고 이것저것 코드를 만져보다 오류코..