inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

React로 NodeBird SNS 만들기

쌤 안녕하세요 어제에 이어서 질문 드릴께요 ㅠㅠ

해결된 질문

234

반가우면반갑다고해

작성한 질문수 142

0

https://github.com/wjdwndtlr/react-site

어제 content 모델에 기본값이 없다는 에러로 마이그레이션과 씨름한 학생입니다.

그 결과, 게시글 (제목, 내용)을 작성하면 잘 post됩니다. 페이로드에 title와 content 각각 잘들어가는거 확인되구요

근데 mysql워크벤처에 들어가면 title만 있고 content는 비어있습니다.

콘솔로그찍어봐도 로그에 타이틀만 기록되구요. 혼자 해결해보려고 계속 씨름해봤는데 도저히 안되서 도움 요청합니다.

- boack=> routes => post.js

const express = require("express");
const db = require("../models");

const router = express.Router();

router.post("/"async (reqresnext=> {
  try {
    const newPost = await db.Post.create({
      title: req.body.title,
      content: req.body.content,
      UserId: req.user.id
    });

    // const fullPost = await db.Post.findOne({
    //   where: { id: newPost.id },
    //   include: [
    //     {
    //       model: db.User
    //     }
    //   ]
    // });
    // console.log("newPost:", newPost);
    // console.log("fullPost:", fullPost);
    return res.json(newPost);
  } catch (e) {
    console.error(e);
    next(e);
  }
});

router.post("/images", (reqres=> {});

router.get("/:id/comments"async (reqresnext=> {});

module.exports = router;

-  front=> sagas=> post.js

import { allforktakeLatestputdelaycall } from "redux-saga/effects";
import axios from "axios";
import {
  ADD_POST_FAILURE,
  ADD_POST_REQUEST,
  ADD_POST_SUCCESS,
  ADD_COMMENT_FAILURE,
  ADD_COMMENT_REQUEST,
  ADD_COMMENT_SUCCESS,
  LOAD_MAIN_POSTS_FAILURE,
  LOAD_MAIN_POSTS_REQUEST,
  LOAD_MAIN_POSTS_SUCCESS,
  LOAD_HASHTAG_POSTS_REQUEST,
  LOAD_HASHTAG_POSTS_SUCCESS,
  LOAD_HASHTAG_POSTS_FAILURE,
  LOAD_USER_POSTS_SUCCESS,
  LOAD_USER_POSTS_FAILURE,
  LOAD_USER_POSTS_REQUEST,
  LOAD_COMMENTS_SUCCESS,
  LOAD_COMMENTS_FAILURE,
  LOAD_COMMENTS_REQUEST
from "../reducers/post";

function addPostAPI(postData) {
  return axios.post("/post"postData, {
    withCredentials: true
  });
}

function* addPost(action) {
  try {
    const result = yield call(addPostAPIaction.data);
    yield put({
      type: ADD_POST_SUCCESS,
      data: result.data
    });
  } catch (e) {
    yield put({
      type: ADD_POST_FAILURE,
      error: e
    });
  }
}

function* watchAddPost() {
  yield takeLatest(ADD_POST_REQUESTaddPost);
}

export default function* postSaga() {
  yield all([fork(watchAddPost)]);
}

- reducers -> post.js

export default (state = initialStateaction=> {
  switch (action.type) {
    case ADD_POST_REQUEST: {
      return {
        ...state,
        isAddingPost: true,
        addPostErrorReason: "",
        postAdded: false
      };
    }

    case ADD_POST_SUCCESS: {
      return {
        ...state,
        isAddingPost: false,
        mainPosts: [action.data, ...state.mainPosts],
        postAdded: true
      };
    }

    case ADD_POST_FAILURE: {
      return {
        ...state,
        isAddingPost: false,
        addPostErrorReason: action.error
      };
   }
default: {
      return {
        ...state
      };
    }
  }
};

react javascript

답변 5

1

제로초(조현영)

router에서 req.body.content 찍어보셨나요?

0

반가우면반갑다고해

안녕하세요. 잘 해결되었습니다. models.post 파일이 원인이였네요 중괄호를 {} 제가 잘못쳤던거였어요.
데이터를 추가하는 중괄호와 ( 타이틀, 내용)  charset.같이 옵션을 넣는부분을 같이 묶으면 안됬던거였군요!!

휴~!

0

반가우면반갑다고해

앗 네 ! 마침 댓글달려던참입니다.

back=> routes => post.js 에서

console.log(req.body.content);

하면 작성한content는 콘솔에 잘 찍힙니다! 흠.. 이러면 좁혀지는거같은데 한참 부족해서 그래도 감이 잘안잡히네요..

0

반가우면반갑다고해

module.exports = (sequelizeDataTypes=> {
  const Post = sequelize.define(
    "Post"// 테이블명은 posts
    {
      title: {
        type: DataTypes.STRING(20),
        allowNull: true,
        defaultValue: ""
      }
    },
    {
      views: {
        type: DataTypes.INTEGER,
        allowNull: false
      }
    },
    {
      content: {
        type: DataTypes.TEXT// 매우 긴 글
        allowNull: true,
        defaultValue: ""
      }
    },
    {
      charset: "utf8mb4"//  한글+이모티콘
      collate: "utf8mb4_general_ci"
    }
  );
  Post.associate = db => {
    db.Post.belongsTo(db.User); // 테이블에 UserId 컬럼이 생겨요
    db.Post.hasMany(db.Comment);
    db.Post.hasMany(db.Image);
    db.Post.belongsToMany(db.User, { through: "Like"as: "Likers" });
  };
  return Post;
};

이렇게 되있습니다.

0

제로초(조현영)

models는요?

next 10 이상에서는 redux dev tool 구동이 안되나요?

0

272

1

세션 갱신 문의 건

0

483

7

배포 진행 후 Highlight updates components render 표시

0

445

1

똑같은 기능을 하는 테이블

0

447

4

관계형

0

312

2

프론트 서버를 이용하지 않는경우

1

299

3

인피니트 스크롤링 사용시 오류

0

278

0

계속 이런에러가 떠서 해결하기는 했는데 어떤 의미인지 모르겠습니다.

0

434

2

req.user가 언제 생성되나요??

0

330

2

Cannot read property 'id' of null 에러

0

333

1

리트윗한 게시글 불러오는 sequelize

0

252

1

result.data에서 images인 이유

0

281

2

takeLatest에 대한 질문입니다.

1

342

2

프론트에서 express를 사용하지 않을때 동적라우팅

0

501

6

getInitialProps가 클라이언트에서 수행되는 이유?

0

258

1

리로드하면 팔로우 언팔로우 값이 초기화 되는 문제입니다.

0

445

2

스타일드 컴포넌트와 className을 통한 스타일 적용의 차이에 대해 궁금합니다

0

585

2

할인 쿠폰 사용이 안되는되요 (848-f9af83f183e3)

0

365

1

nodejs mvc 패턴

0

975

4

사용하고 보니, 람다 구성이 궁금합니다!

0

266

1

제로초님

0

445

1

새로고침 로그인 풀림 문제.

0

247

1

안녕하세요. 강의 너무 감사합니다

0

157

1

제로초님

0

170

1