inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Node.js에 TypeScript 적용하기(feat. NodeBird)

상황에 맞게 인터페이스 수정하기

시퀄라이즈 논리연산자 처리방식 질문

137

G General

작성한 질문수 23

0

      where:{id:parseInt(req.params.id,10)||(req.user&&req.user.id)||0}

논리연산자 부분이 뭔가 부자연스러워서 한참을 생각해봤는데, 이것은 시퀄라이즈가 where  내부에 논리연산자 관련 처리를 해놓지 않았다면, :id 가 숫자이기만 하면 항상 req.params.id인 유저를 찾게되는 하나의 명령어인 것 같습니다. 

그러나 저 코드의 의도는 findOne(where:{id:req.params})를 해보고, 없다면 findOne(where:{id:(req.user&&req.user.id})를 해보고, 또 없다면 findOne(where:{id:0})을 최후의 수단으로 해라가 맞는 것 같습니다.

예를 들어 DB에 회원이 1명만 있다 가정하고, GET /100/followings 요청을 보낸다고 생각해볼 때, 논리연산식에 따르면 where:{id:100}인 findOne명령이 한 번 실행되고 끝이 아닌가요? where 내부에서 논리연산식을 사용하면 그에 맞게 시퀄라이즈가 똑똑하게  findOne 요청을 적절하게 여러번 보내게 되는건가요?

typescript 웹앱 nodejs

답변 1

0

제로초(조현영)

시퀄라이즈는 아무 역할이 없습니다. 똑똑한 것도 아니고요. 그 논리식의 결괏값을 받아 그냥 처리할 뿐입니다. 그 값대로 요청은 한 번만 보냅니다.

0

G General

아하 감사합니다. 궁금한건 풀렸습니다! 시퀄라이즈는 안 똑똑하다..!

근데 그러면, 애초에 그냥 req.params.id를 숫자로 암묵적으로 단언해놓고, 혹시라도 /any/followings 요청 같은 괴상한 짓에 대응하기 위해서, 로그인을 했다면 그 유저의 팔로잉을, 안 했다면 0을 가져오게 처리만 해주고, id매치결과가 없는 경우는 에러로 넘기겠다는 의도인가요?

그럴거면 id:req.params.id 만 하고, 나머지 경우는 다 에러 처리 미들웨어로 보내고 로그 보면서 대응하는게 개발/배포 과정에서 더 좋지 않나요? 사실 이 경우엔 웬만큼 괴상한짓을 하지 않는 이상 에러가 안날거같긴한데..

0

제로초(조현영)

애초에 타인 계정 가져오기, 내 계정 가져오기 라우터를 분리하는 게 더 나은 방법이라고 생각하긴 합니다.

'S3' 형식에 'S3Client' 형식의 destroy, middlewareStack, send 속성이 없습니다.ts(2739)

0

514

1

throw new Error(`${this.name}.hasMany called with something that's not a subclass of Sequelize.Model`); 에러 질문

0

348

1

안녕하세요.. connect ECONNREFUSED 127.0.0.1:3306 관련해서 질문드립니다

0

964

1

@types를 dependencies에 넣는 이유?

0

407

1

JS에서 babel 사용시 `import * as` 구문을 안써도되는데, 바벨이 esModuleInterop: true 로 처리해주는 것인가요?

0

322

1

Sequelize Association 오류

0

526

2

Sequelize constructor.primaryKeyAttributes 오류

0

987

1

Sequelize에 요청을 보내면 오류가 뜹니다

0

803

1

강좌에서 사용된 3개의 코드 의미가 궁금합니다 [ 코드 : 1. [ key:string]:string] 2. delete user.password , 3.passport.deserializeUser<number> ]

0

342

1

@mui/x-data-grid 에 사용자정의 컬럼 타입을 추가해서 사용하려고 합니다.

0

2634

1

미들웨어 에러

1

319

1

Could not find a declaration file for mould '../utils/jwt-utils'

1

186

1

마지막에 type과 interface 추가하는 부분

0

224

1

다른 컴퓨터에서 제가 만든 DB 테이블의 데이터를 그대로 사용하려면?

0

292

1

express 모듈 에러 관련

0

246

1

import * as A from 'B'

0

219

1

MySql ssl 보안 옵션 질문 입니다.

0

363

2

passport/index.ts 에러 입니다

1

456

1

routes/post.ts 페이지에서 에러나요..

0

315

1

passport/index.ts 에러납니다...

0

819

1

ts import 에러

0

444

1

타입스크립트로 변환후 nextjs 빌드 후 배포

0

265

1

sequelize include 질문드립니다.!

0

193

1

roperty 'id' does not exist on type 'User'.

0

906

1