에러에 대한 질문입니다.

미해결질문
KY lee 프로필

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 가 없다고 하네요 .
참고로 회원가입할 때 생기는 오류입니다.

깃허브 필요하시면 첨부해드릴게요!!
조현영 프로필
조현영 2019.11.25

db.User로 바꿔보세요.

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

KY lee 프로필
KY lee 2019.11.26

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

조현영 프로필
조현영 2019.11.26

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

KY lee 프로필
KY lee 2019.11.26

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

Daniel Hwang 프로필
Daniel Hwang 10달 전

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

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

Daniel Hwang 프로필
Daniel Hwang 10달 전

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

Daniel Hwang 프로필
Daniel Hwang 10달 전

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

지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스