inflearn logo
강의

Course

Instructor

Node.js Textbook - From Basics to Project Practice

passport serializeUser/deserializeUser

에러에 대한 질문입니다.

676

KY lee

7 asked

0

User.find is not a function

TypeError: User.find is not a function
    at D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\routes\auth.js:13:35
    at Layer.handle [as handle_request] (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\layer.js:95:5)
    at next (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\route.js:137:13)
    at exports.isNotLoggedIn (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\routes\middlewares.js:14:9)
    at Layer.handle [as handle_request] (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\layer.js:95:5)
    at next (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\layer.js:95:5)
    at D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\index.js:335:12)
    at next (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\index.js:275:10)
    at Function.handle (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\index.js:174:3)
    at router (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\index.js:47:12)
    at Layer.handle [as handle_request] (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\index.js:317:13)
    at D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\index.js:284:7
    at Function.process_params (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\index.js:335:12)
    at next (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\index.js:275:10)
    at D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\index.js:635:15
    at next (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\index.js:260:14)
    at Function.handle (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\index.js:174:3)
    at router (D:\_Node.js\_NodeStudy_inflearn\Node-Study\NodeSNS\nodebird\node_modules\express\lib\router\index.js:47:12)

오류가 이렇게 나옵니다...

하지만 저는 auth.js 설정이 되어있습니다.

const express = require('express');
const passport = require('passport');
const bcrypt = require('bcrypt');
const { isLoggedIn, isNotLoggedIn } = require('./middlewares');
const { User } = require('../models');

const router = express.Router();

// POST /auth/join (회원가입)
router.post('/join', isNotLoggedIn, async (req, res, next) => {
    const { email, nick, password} = req.body;
    try {
        const exUser = await User.find({ where: { email } });
        if (exUser) {
            req.flash('joinError', '이미 가입된 이메일입니다.');
            return res.redirect('/join');
          }
        // console.time('암호화 시간');
        const hash = await bcrypt.hash(password, 17);
        // console.timeEnd('암호화 시간');
        await User.create({
            email,
            nick,
            password: hash,
        });
        return res.redirect('/');
    } catch (error) {
        console.error(error);
        next(error);
    }

})


models/user.js도 이렇게 설정이 되어있습니다.

// 사용자 테이블
module.exports = ( (sequelize, DataTypes) => (
    sequelize.define('user', {
        email : {
            type: DataTypes.STRING(40),
            allowNull: true,
            unique: true,
        },
        nick : {
            type: DataTypes.STRING(15),
            allowNull: false,
        },
        password: {
            type: DataTypes.STRING(100),
            allowNull: true, // 카카오 로그인 위해서 true를 해준다. 나중에 데이터베이스 확인할 것.
        },
        // provider는 local과 kakao 구분하기 위해서
        provider: {
            type:DataTypes.STRING(10),
            allowNull: false,
            defaultValue: 'local',
        },
        snsID: {
            type: DataTypes.STRING(30),
            allowNull: true,
        }
    }, {
        timestamps : true,
        paranoid : true,
    })
));


제대로 적었다고 생각했었는데 User.find 가 없다고 하네요 .
참고로 회원가입할 때 생기는 오류입니다.

깃허브 필요하시면 첨부해드릴게요!!

javascript mysql nodejs mongodb

Answer 7

1

zerocho

해당 파일 최상단에요. require하는 방법은 아시죠?

0

Daniel Hwang

아 블로그 정오표에 다 해놓으셨넹 ㅎㅎ;

0

Daniel Hwang

아 이거 find()가 아니라 findOne() 해야되네유~! 제로초님 이거 소스 수정하실 때 참고하세유ㅎ

0

Daniel Hwang

KY lee님 이거 어떻게 해결하셨나요..?

저도 똑같은 에러인데 잘 안되네요ㅠ

0

KY lee

해결했습니다!! 감사합니다!!!

0

KY lee

제가 이해를 못해서 그러는데 어디에 하면 될까요?? 죄송합니다...

0

zerocho

db.User로 바꿔보세요.

db나 User를 require하셔야합니다.

실제 서비스에서도 cluster를 사용하나요?

1

313

2

캐싱에 관하여

0

279

3

salt를 실무에서 사용할때 항상 randomBytes로 만들어줘야 하나요?

0

347

1

게시물 올리기 오류

0

408

1

캐슁 이후 로그인창

0

266

1

kakao passport 질문있습니다.

0

493

3

global객체 공유 질문드립니다.

1

417

1

서버가 죽어버리네요

0

1047

8

포링키 문제..

0

235

2

커넥션 플래시 설치문제

0

216

2

익스프레스 제너레이터? 설치문제

0

2586

6

redis 질문입니다.

0

305

1

9장 세션을 DB에 저장시 리다이렉션 오류 발생

0

874

8

프레임워크 선택에 관하여 질문이 있습니다.

0

300

3

시퀄라이즈 질문입니다 ! !

0

588

1

리뉴얼 강의 12강 socket.io에서 req.session접근 관련 질문

0

922

6

oAuth 질문입니다.

0

356

3

GCP 질문입니다.

0

366

1

Passport 모듈 로그인 구현관련

0

720

6

카카오 로그인 관련 질문입니다!!

0

606

4

스스로 해보기 10-16 nunjuncks 질문있습니다

0

499

5

제로초님 HTTP 완벽가이드 추천해주신거 너무 잘 읽었습니다.

0

317

2

gif채팅방 nunjucks관련 질문입니다!

0

338

3

현영님 몽고db관련 질문입니다.

0

233

3