• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Node.js, Express 게시판 passport.serializeUser 타입스크립트

passport.serializeUser 타입스크립트

  • 이 주제에는 3개 답변, 2명 참여가 있으며 Leo5 월, 3 주 전에 전에 마지막으로 업데이트했습니다.
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #135325

    Leo
    참가자
    안녕하세요. 타입스크립트로 회원기능  만드는데 이런 에러가 뜹니다.
    passport.use(
    new LocalStrategy(async (userid, userpw, cb) => {
    let result = await db.collection("user").findOne({ username: userid });
    if (!result) {
    return cb(null, false, { message: "IdError" });
    }
    if (result.password == userpw) {
    return cb(null, result);
    } else {
    return cb(null, false, { message: "PwError" });
    }
    })
    );
    
    passport.serializeUser((user, done) => {
    process.nextTick(() => {
    done(null, { id: user._id, username: user.username });
    });
    });
    
    에서 
    server.ts:46:48 - error TS2339: Property 'username' does not exist on type 'User'.
    server.ts:46:27 - error TS2339: Property '_id' does not exist on type 'User'.
    이런 에러가 뜹니다.
    어떻게 고치나요?
    
    user 콜렉셔에는 이게 들어있습니다.
    {"_id":{"$oid":"678af3855386c08e615ee395"},"username":"test","password":"aaaa"}
    
    • 이 게시글은 Leo에 의해 5 월, 3 주 전에 수정됐습니다.
    #135329

    codingapple
    키 마스터
    passport.serializeUser((user, done) => {
    user파라미터에 
    {"_id":어쩌구,"username":어쩌구} 
    이런 타입을 만들어서 부여해봅시다
    #135331

    Leo
    참가자
    원래 에러는 사라졌는데 에러가 하나 더 생겼어요.
    
    44 passport.serializeUser((user: { _id: ObjectId; username: string }, done) => {
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    
    이 호출과 일치하는 오버로드가 없습니다.
    오버로드 1/4('(fn: (user: User, done: (err: any, id?: unknown) => void) => void): void')에서 다음 오류가 발생했습니다.
    '(user: { _id: ObjectId; username: string; }, done: (err: any, id?: unknown) => void) => void' 형식의 인수는 '(user: User, done: (err: any, id?: unknown) => void) => void' 형식의 매개 변수에 할당될 수 없습니다.
    'user' 및 'user' 매개 변수의 형식이 호환되지 않습니다.
    'User' 형식에 '{ _id: ObjectId; username: string; }' 형식의 _id, username 속성이 없습니다.
    오버로드 2/4('(fn: (req: IncomingMessage, user: User, done: (err: any, id?: unknown) => void) => void): void')에서 다음 오류가 발생했습니다.
    '(user: { _id: ObjectId; username: string; }, done: (err: any, id?: unknown) => void) => void' 형식의 인수는 '(req: IncomingMessage, user: User, done: (err: any, id?: unknown) => void) => void' 형식의 매개 변수에 할당될 수 없습니다.
    'user' 및 'req' 매개 변수의 형식이 호환되지 않습니다.
    'IncomingMessage' 형식에 '{ _id: ObjectId; username: string; }' 형식의 _id, username 속성이 없습니다.ts(2769)
    
    "@types/passport": "^1.0.17",
    "@types/passport-local": "^1.0.38", devDependencies 에 추가해뒀습니다.
    #135334

    Leo
    참가자
    https://stackoverflow.com/questions/66849999/how-to-fix-no-overload-matches-this-call-error-when-using-passport-serializeu
    이거 보고 해결했습니다.
    
     
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠