• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

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

20.03.10 09:20 작성 조회수 173

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
      };
    }
  }
};

답변 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는요?