Commit 71aa5b17 authored by Lee Soobeom's avatar Lee Soobeom
Browse files

token user.id ref

parent 9fe5e544
import axios from "axios";
import baseUrl from "./baseUrl";
import { PostingType } from "../types";
import { PostType } from "../types";
export const posting = async (post: PostingType) => {
export const posting = async (post: PostType) => {
const { data } = await axios.post(`${baseUrl}/posts/`, post);
return data;
};
......@@ -10,7 +10,7 @@ export default function Post({ handleClick, post }: Props) {
return (
<div className="flex flex-row h-16 divide-x-2 border-2 border-solid">
<div className="basis-full">
<button id={post.id} onClick={handleClick}>
<button id={post.userId} onClick={handleClick}>
{post.title}
</button>
</div>
......
import React, { FormEvent, useState } from "react";
import { useNavigate } from "react-router-dom";
import isLength from "validator/lib/isLength";
import equals from "validator/lib/equals";
// import { addDataList } from "../board/board";
import { catchErrors } from "../helpers";
import { PostingType } from "../types";
import { PostType } from "../types";
import { postApi } from "../apis";
export default function Posting() {
......@@ -10,13 +12,15 @@ export default function Posting() {
const [theme, setTheme] = useState<string>("질문종류");
const [title, setTitle] = useState<string>("");
const [text, setText] = useState<string>("");
const navigate = useNavigate();
const [user, setUser] = useState<PostingType>({
const [user, setUser] = useState<PostType>({
title: "",
text: "",
theme: "",
city: "",
username: "",
userId: "",
counts: 0,
});
const [loading, setLoading] = useState(false);
......@@ -32,8 +36,10 @@ export default function Posting() {
if (postingFormMatch()) {
setLoading(true);
const res = await postApi.posting(user);
console.log("서버연결됬나요", res);
console.log("user save");
// addDataList(res);
// console.log("서버연결됬나요", res);
// console.log("user save");
navigate("/board", { replace: true });
setSuccess(true);
setError("");
}
......
......@@ -9,18 +9,14 @@ export interface LoginUser {
password: string;
}
export interface PostType extends PostingType {
date?: string;
counts: number;
id?: string;
}
export interface PostingType {
export interface PostType {
title: string;
text?: string;
theme: string;
city: string;
username: string;
date?: string;
counts: number;
userId: string;
}
export interface SignupUser {
......
import { NextFunction, Request, Response } from "express";
import isLength from "validator/lib/isLength";
import equals from "validator/lib/equals";
import { requireLogin } from "./auth.controller";
import { TypedRequestAuth } from "./auth.controller";
import { asyncWrap } from "../helpers";
import { postDb } from "../db";
export const posting = asyncWrap(async (req, res) => {
const { title, text, theme, city, username, date, counts } = req.body;
export const postCreate = asyncWrap(async (reqExp, res, next) => {
const req = reqExp as TypedRequestAuth<{ userId: string }>;
console.log("body", req.body);
const { title, text, theme, city, date } = req.body as {
title: string;
text: string;
theme: string;
city: string;
date: Date;
};
// 0) 로그인 했는지 확인 requireLogin
console.log("body", req.body);
// 1) title 빈 문자열인지 확인
if (!isLength(title ?? "", { min: 1 })) {
......@@ -32,16 +38,16 @@ export const posting = asyncWrap(async (req, res) => {
return res.status(422).send("도시를 선택해 주세요");
}
// 5) username ref: cookie.token._id -> collection users, "User"-> name
const userId = req.auth.userId;
const newPosting = await postDb.createPosting({
const newPost = await postDb.createPost({
title,
text,
theme,
city,
username,
date,
counts,
user: userId,
});
return res.json(newPosting);
return res.json(newPost);
});
import { Posting, PostingType } from "../models";
import { Post, PostType } from "../models";
export const createPosting = async (posting: PostingType) => {
const newPosting = await Posting.create({
title: posting.title,
text: posting.text,
theme: posting.theme,
city: posting.city,
username: posting.username,
date: posting.date,
export const createPost = async (post: PostType) => {
const newPosting = await Post.create({
title: post.title,
text: post.text,
theme: post.theme,
city: post.city,
user: post.user,
date: post.date,
counts: 0,
});
return newPosting;
......
export { default as User, IUser } from "./user.model";
export { default as Posting, PostingType } from "./posting.model";
export { default as Post, PostType } from "./post.model";
import { model, Schema, Types } from "mongoose";
import { PostingType } from "./posting.model";
import { Document, model, Schema, Types } from "mongoose";
import { Posting } from ".";
export interface PostType extends PostingType {
date?: string;
counts: number;
id?: string;
export interface PostType {
title: string;
text?: string;
theme: string;
city: string;
user?: Types.ObjectId | string;
date?: Date;
counts?: number;
}
const postSchema = new Schema<PostType>({
title: { type: String },
theme: { type: String },
city: { type: String },
username: { type: String },
date: { type: String },
counts: { type: Number },
const PostSchema = new Schema<PostType>({
title: {
type: String,
required: true,
},
text: {
type: String,
required: true,
},
theme: {
type: String,
},
city: {
type: String,
},
user: {
type: Schema.Types.ObjectId,
ref: "User",
},
date: {
type: Date,
default: Date.now,
},
counts: {
type: Number,
},
});
export default model<PostType>("Post", postSchema);
export default model<PostType>("Post", PostSchema);
import { model, Schema } from "mongoose";
export interface PostingType {
title: string;
text?: string;
theme: string;
city: string;
username?: string;
date?: string;
counts?: number;
}
const postingSchema = new Schema<PostingType>({
title: {
type: String,
required: true,
},
text: {
type: String,
required: true,
},
theme: {
type: String,
},
city: {
type: String,
},
username: {
type: String,
// username: travelreport.users.findOne({id: cookie.token._id(Schema.Tpyes.ObjectId)}).name,
},
date: {
type: Date,
default: Date.now,
},
counts: {
type: Number,
},
date: {
type: Date,
dafault: Date.now,
},
counts: 0,
});
export default model<PostingType>("Posting", postingSchema);
......@@ -3,6 +3,6 @@ import { postCtrl, authCtrl } from "../controllers";
const router = express.Router();
router.route("/").post(authCtrl.requireLogin, postCtrl.posting);
router.route("/").post(authCtrl.requireLogin, postCtrl.postCreate);
export default router;
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment