-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
글작성시 userId가 데이터에 저장을 안해서 게시글을 가져올려고 해도 안가져와집니다.
23.04.09 15:02 작성 조회수 334
0
1.
뭔가 프론트는 문제가 없는거같은데
백에서는 어디에서 문제가 있는지 잘모르겠습니다 ㅠㅠ
에러는 없습니다
3.
const express = require("express");
const { Post, Image, Comment, User } = require("../models");
const { isLoggedIn } = require("./middlewares");
const router = express.Router();
router.post("/", isLoggedIn, async (req, res) => {
try {
const post = await Post.create({
content: req.body.content,
UserId: req.user.id,
});
const fullPost = await Post.findOne({
where: { id: post.id },
include: [
{
model: Image,
},
{
model: Comment,
include: [
{
model: User, // 댓글 작성자
attributes: ["id", "nickname"],
},
],
},
{
model: User, // 게시글 작성자
attributes: ["id", "nickname"],
},
{
model: User, // 좋아요 누른 사람
as: "Likers",
attributes: ["id"],
},
],
});
res.status(201).json(fullPost);
} catch (error) {
console.error(error);
next(error);
}
});
router.post("/:postId/comment", isLoggedIn, async (req, res) => {
try {
const post = await Post.findOne({
where: { id: req.params.postId },
});
if (!post) {
return res.status(403).send("존재하지 않는 게시글입니다"); //return을 붙여줘야지 send하고 밑에 json이 동시에 실행안됨
}
const comment = await Comment.create({
content: req.body.content,
PostId: req.params.postId,
UserId: req.user.id,
});
res.status(201).json(comment);
} catch (error) {
console.error(error);
next(error);
}
});
router.delete("/", (req, res) => {
res.json({});
});
module.exports = router;
import { Form, Input, Button } from "antd";
import { useCallback, useRef, useEffect, useState } from "react";
import { useDispatch, useSelector } from "react-redux";
import { ADD_POST_REQUEST } from "../reducers/post";
import useInput from "./hooks/useInput";
const PostForm = () => {
const { imagePaths, addPostDone, addPostLoading } = useSelector(
(state) => state.post
);
const [text, setText] = useState("");
const dispatch = useDispatch();
const imageInput = useRef();
useEffect(() => {
if (addPostDone) {
setText("");
}
}, [addPostDone]);
const onSubmitForm = useCallback(() => {
dispatch({
type: ADD_POST_REQUEST,
data: text,
});
}, [text]);
const onChangeText = useCallback((e) => {
setText(e.target.value);
}, []);
const onClickImageUpload = useCallback(() => {
imageInput.current.click();
}, [imageInput.current]);
return (
<Form
style={{ margin: "10px 0 20px" }}
encType="multipart/form-data"
onFinish={onSubmitForm}
>
<Input.TextArea
value={text}
onChange={onChangeText}
maxLength={140}
placeholder="어떤 일이 생겼나요"
/>
<div>
<input type="file" multiple hidden ref={imageInput} />
<Button onClick={onClickImageUpload}>이미지 업로드</Button>
<Button
type="primary"
style={{ float: "right" }}
htmlType="submit"
loading={addPostLoading}
>
짹쨱
</Button>
</div>
<div>
{imagePaths.map((v) => (
<div key={v} style={{ display: "inline-block" }}>
<img src={v} style={{ width: "200px" }} alt={v} />
<div>
<Button>제거</Button>
</div>
</div>
))}
</div>
</Form>
);
};
export default PostForm;
//saga - AddPost
function addPostAPI(data) {
return axios.post("/post", { content: data });
}
function* addPost(action) {
try {
const result = yield call(addPostAPI, action.data);
yield put({
//put : dispatch
type: ADD_POST_SUCCESS,
data: result.data,
});
yield put({
type: ADD_POST_TO_ME,
data: result.data.id,
});
} catch (err) {
yield put({
type: ADD_POST_FAILURE,
data: err.response.data,
});
}
}
// reducer
case ADD_POST_REQUEST:
draft.addPostLoading = true;
draft.addPostDone = false;
draft.addPostError = null;
break;
case ADD_POST_SUCCESS:
draft.addPostLoading = false;
draft.addPostDone = true;
draft.mainPosts.unshift(action.data);
break;
case ADD_POST_FAILURE:
draft.addPostLoading = false;
draft.addPostError = action.error;
break;
답변을 작성해보세요.
답변 1