토큰 - 로그인하면 토큰을 브라우저에 전달 : 서버에는 저장 없음
npx sequelize migration:create --name add
// add라는 이름으로 migration파일이 생성
up은 새로 생성되는것 , down은 삭제, 되돌리는 것들을 넣는다. async로 되어있어서 await을 넣어주자. -> 강의자료에서는 안넣어주는데...
sequelize db:migrate
//마이그레이션 디비에 적용
댓글을 불러올때 내가 원하는 게시물의 댓글만 불러와야 한다.
결국 게시물과 댓글의 정보를 join을 해야 하는데.... 다행히 fk를 넣어놨다.
댓글에 넣은 postid를 이용해서 어느게 선이든 join을 해서 정보를 가져오면된다.
sequelize에서는 join을 할때 include를 사용한다. -> 기본이 inner join이라고 한다.
기준으로 삼은 테이블을 findAll하는데
where에 join할 기준 컬럼
include [(model:모델이름, require: true, attributes: 가져올 항목,)]
으로 가져오면 된다.
const comments = await Post.findAll({
where: { postId: postId },
include: [{
model: Comment,
require: true,
attributes: ['postId','text','userId'],
}]
크게 다를건 없는것 같다. where로 찾는건 같고 indclud도 같고 모델이름 가져오는 것도 같지만 required 옵션을 false로 하면 left join이 된다.
팀원 git을 보고 있는데 dotenv라는 코드가 있어서 물어봤는데 환경변수로 공유하고 싶지않은 비밀번호나 자료를 따로 저장하는 것이라고 설명해서 나도 db비번,주소등을 따로 보관해야겠다 생각을 하고 해보기로 했다.
구글로 찾아보니 핵심은 .env파일에 비번이나 공유해서는 안되는 정보들을 예로 sequelize의 config.json에 들어가는 정보들을 따로 .env에 저장을 하고 .env를 사용하는것 -> .env는 git에 올라가면 안된다.
config.js로 파일을 바꾸고 dotenv를 불러와서 사용한다
require('dotenv').config()
const env = process.env
이제 처음 본고 해보는거여서 잘 이해가 안되는게 있지만
안에 jwt의 secretkey도 담아야겠다.
refreshToken을 로그인을 하면서 access와 refresh를 동시에 생성하면서 쿠키로 뿌리고 현재 프론트가 없어서 next로 다음 미들웨어에서 token검사를 하려고 하는데....
if (!isAccessTokenValidate) {
const accessTokenId = tokenObject[refreshToken];
access코드가 만료되어서 tokenObject에 저장되었던 id를 이용해서 다시 access를 발급을 받아야 하는데 tokenObject가 넘어오지 않는다..
app.use("/user",[loginRouter,userRouter])
const authMiddle = require('./middlewares/auth-middleware.js')
//loginRouter에서 보냄
res.toekenObject = toekenObject
//authMiddle에서 받음
const tokenObject = req.toekenObject
받을 때 req.toekenObject가 언디파인드로 출력이 계속된다...
방법을 잘 모르겠는데.... 내일 아침에 물어봐야겠다.