inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

sequelize-auto 질문있습니다.

해결된 질문

233

이길13111

작성한 질문수 2

0

안녕하세요 제로초님

강의를 보면서 시퀄라이즈 생성시 

db를 미리 만들어 놓은 후 sequelize-auto 로 모델들을 생성해주면

init-models 등 모델 관련 js가 생기는데요

여기서 db접속이 안되는 것 같은 에러가 발생합니다.

예를들어 User모델을 가지고온 후 findOne을 하게되면 User.findOne is not a function 이런 에러가 발생하는데... 

이런경우 어떻게 해결해야할까요..?

sequelize-auto mysql nodejs mongodb Sequelize

답변 1

0

제로초(조현영)

User을 어떻게 임포트하셨나요?

0

이길13111

const User = require('../models/user');
이렇게 임포트 했습니다..ㅠ

0

제로초(조현영)

models/user 올려주세요.

0

이길13111

const Sequelize = require('sequelize');

module.exports = function(sequelize, DataTypes) {

  return sequelize.define('users', {

    id: {

      autoIncrement: true,

      type: DataTypes.INTEGER,

      allowNull: false,

      primaryKey: true

    },

    email: {

      type: DataTypes.STRING(40),

      allowNull: true,

      unique: "email"

    },

    nick: {

      type: DataTypes.STRING(15),

      allowNull: false

    },

    password: {

      type: DataTypes.STRING(100),

      allowNull: true

    },

    provider: {

      type: DataTypes.STRING(10),

      allowNull: false,

      defaultValue: "local"

    },

    snsId: {

      type: DataTypes.STRING(30),

      allowNull: true

    }

  }, {

    sequelize,

    tableName: 'users',

    timestamps: true,

    paranoid: true,

    indexes: [

      {

        name: "PRIMARY",

        unique: true,

        using: "BTREE",

        fields: [

          { name: "id" },

        ]

      },

      {

        name: "email",

        unique: true,

        using: "BTREE",

        fields: [

          { name: "email" },

        ]

      },

    ]

  });

};

이렇게구요 처음보는게 init-models.js라는 곳에 관계맺는거랑

초기화 관련된게 있는 것 같습니다.

0

이길13111

var DataTypes = require("sequelize").DataTypes;

var _domains = require("./domains");

var _follow = require("./follow");

var _hashtags = require("./hashtags");

var _posthashtag = require("./posthashtag");

var _posts = require("./posts");

var _users = require("./users");

function initModels(sequelize) {

  var domains = _domains(sequelize, DataTypes);

  var follow = _follow(sequelize, DataTypes);

  var hashtags = _hashtags(sequelize, DataTypes);

  var posthashtag = _posthashtag(sequelize, DataTypes);

  var posts = _posts(sequelize, DataTypes);

  var users = _users(sequelize, DataTypes);

  hashtags.belongsToMany(posts, { as: 'PostId_posts', through: posthashtag, foreignKey: "HashtagId", otherKey: "PostId" });

  posts.belongsToMany(hashtags, { as: 'HashtagId_hashtags', through: posthashtag, foreignKey: "PostId", otherKey: "HashtagId" });

  users.belongsToMany(users, { as: 'followingId_users', through: follow, foreignKey: "followerId", otherKey: "followingId" });

  users.belongsToMany(users, { as: 'followerId_users', through: follow, foreignKey: "followingId", otherKey: "followerId" });

  posthashtag.belongsTo(hashtags, { as: "Hashtag", foreignKey: "HashtagId"});

  hashtags.hasMany(posthashtag, { as: "posthashtags", foreignKey: "HashtagId"});

  posthashtag.belongsTo(posts, { as: "Post", foreignKey: "PostId"});

  posts.hasMany(posthashtag, { as: "posthashtags", foreignKey: "PostId"});

  domains.belongsTo(users, { as: "User", foreignKey: "UserId"});

  users.hasMany(domains, { as: "domains", foreignKey: "UserId"});

  follow.belongsTo(users, { as: "follower", foreignKey: "followerId"});

  users.hasMany(follow, { as: "follows", foreignKey: "followerId"});

  follow.belongsTo(users, { as: "following", foreignKey: "followingId"});

  users.hasMany(follow, { as: "following_follows", foreignKey: "followingId"});

  posts.belongsTo(users, { as: "User", foreignKey: "UserId"});

  users.hasMany(posts, { as: "posts", foreignKey: "UserId"});

  return {

    domains,

    follow,

    hashtags,

    posthashtag,

    posts,

    users,

  };

}

module.exports = initModels;

module.exports.initModels = initModels;

module.exports.default = initModels;

init-models입니다.

0

제로초(조현영)

지금 코드로 하면 개별 모델에 접근할 수가 없습니다. 코드를 저와 같이 바꾸셔야 합니다. 잘 보시면 저와 리턴값이 모두 다릅니다.

0

이길13111

어디를 어떻게 바꿔야 하는건가요...?  많이 찾아봤는데 잘 모르겠습니다.ㅠㅠ

0

제로초(조현영)

제 깃헙 코드요.

github.com/zerocho/react-nodebird

0

이길13111

sequelize-auto는 그럼 쓰면 안되는건가요...?

db쪽 테이블 설계 후 sequelize-auto 하면 편하게 모델 생성할수있다고 보고 해본건데...

안되는건가요..?

0

제로초(조현영)

편하게 모델 생성했으니 다른 부분만 조금 고치면 되는 거죠. 완벽하게 자기 입맛에 맞게 고쳐주는 툴은 별로 없습니다. 어느 정도는 직접 수정할 각오 하셔야해요.

0

이길13111

아 답변감사합니다..!

리눅스 노드 설치시 패키지

0

172

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

926

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2297

2

a[title] 질문드립니다

0

386

1

리뉴얼 강의 및 공부 방법

0

589

1

jwt decode

0

1137

1

node.js 교과서 3판 질문드립니다

0

396

1

passport와 jwt

0

438

1

리뉴얼 강의

0

428

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

359

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

488

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

511

2

nunjucks res.render('error'); 작동을 안합니다.

0

518

1

질문있습니다.

0

348

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3543

1

수업자료는 어디있나요?

0

374

1

질문 있습니디

0

244

1

multer 사용시 file 외 name값은 못받나용?

0

429

1

코드 중복 부분 질문드립니다.

0

303

1

api 만드는 이유 질문드립니다.

0

292

1

Strategy의 done에 대해 질문드립니다.

0

373

1

안녕하세요 fs 권한 관련 질문드립니다

0

456

1

시퀄라이즈 연결질문...

0

510

2

res.setHeader vs res.cookie

0

1797

3