Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
students
travel
Commits
3b01ee29
Commit
3b01ee29
authored
Jul 11, 2022
by
Lee Soobeom
Browse files
duplicate key error clear
parent
94bd52bc
Changes
7
Show whitespace changes
Inline
Side-by-side
src/controllers/auth.controller.ts
View file @
3b01ee29
...
@@ -35,8 +35,7 @@ export const login = asyncWrap(async (req, res) => {
...
@@ -35,8 +35,7 @@ export const login = asyncWrap(async (req, res) => {
maxAge
:
cookieConfig
.
maxAge
,
// 이 기간 내에서만 유효
maxAge
:
cookieConfig
.
maxAge
,
// 이 기간 내에서만 유효
path
:
"
/
"
,
//어떠한 경로에 관해서만 쓴다. 지금은 전부에 쓴다.
path
:
"
/
"
,
//어떠한 경로에 관해서만 쓴다. 지금은 전부에 쓴다.
httpOnly
:
envConfig
.
mode
===
"
production
"
,
//false면 브라우저에서 쿠키를 조작, true면 조작할 수 없다.
httpOnly
:
envConfig
.
mode
===
"
production
"
,
//false면 브라우저에서 쿠키를 조작, true면 조작할 수 없다.
secure
:
envConfig
.
mode
===
"
production
"
,
//true 면 https를 통해서만 쿠키 전달, false면
secure
:
envConfig
.
mode
===
"
production
"
,
// true면 https를 통해서만 쿠키 전달, false면 불가능
});
});
// 5) 사용자 반환
// 5) 사용자 반환
res
.
json
({
res
.
json
({
...
@@ -91,6 +90,7 @@ export const signup = asyncWrap(async (req, res) => {
...
@@ -91,6 +90,7 @@ export const signup = asyncWrap(async (req, res) => {
const
hash
=
await
bcrypt
.
hash
(
password
,
10
);
const
hash
=
await
bcrypt
.
hash
(
password
,
10
);
// 4) 새로운 사용자 만들기
// 4) 새로운 사용자 만들기
const
newUser
=
await
userDb
.
createUser
({
const
newUser
=
await
userDb
.
createUser
({
name
,
email
,
email
,
password
,
password
,
});
});
...
...
src/controllers/post.controller.ts
View file @
3b01ee29
import
{
NextFunction
,
Request
,
Response
}
from
"
express
"
;
import
{
NextFunction
,
Request
,
Response
}
from
"
express
"
;
import
isLength
from
"
validator/lib/isLength
"
;
import
isLength
from
"
validator/lib/isLength
"
;
import
equals
from
"
validator/lib/equals
"
;
import
equals
from
"
validator/lib/equals
"
;
import
{
requireLogin
}
from
"
./auth.controller
"
;
import
{
asyncWrap
}
from
"
../helpers
"
;
import
{
asyncWrap
}
from
"
../helpers
"
;
import
{
postDb
}
from
"
../db
"
;
import
{
postDb
}
from
"
../db
"
;
export
const
posting
=
asyncWrap
(
async
(
req
,
res
)
=>
{
export
const
posting
=
asyncWrap
(
async
(
req
,
res
)
=>
{
const
{
title
,
text
,
theme
,
city
,
username
}
=
req
.
body
;
const
{
title
,
text
,
theme
,
city
,
username
,
date
,
counts
}
=
req
.
body
;
console
.
log
(
"
body
"
,
req
.
body
);
console
.
log
(
"
body
"
,
req
.
body
);
// 0) 로그인 했는지 확인 requireLogin
// 1) title 빈 문자열인지 확인
// 1) title 빈 문자열인지 확인
if
(
!
isLength
(
title
??
""
,
{
min
:
1
}))
{
if
(
!
isLength
(
title
??
""
,
{
min
:
1
}))
{
return
res
.
status
(
422
).
send
(
"
제목을 한 글자 이상 입력해주세요
"
);
return
res
.
status
(
422
).
send
(
"
제목을 한 글자 이상 입력해주세요
"
);
...
@@ -29,27 +32,16 @@ export const posting = asyncWrap(async (req, res) => {
...
@@ -29,27 +32,16 @@ export const posting = asyncWrap(async (req, res) => {
return
res
.
status
(
422
).
send
(
"
도시를 선택해 주세요
"
);
return
res
.
status
(
422
).
send
(
"
도시를 선택해 주세요
"
);
}
}
// 5) username
확인 필요 없음
// 5) username
ref: cookie.token._id -> collection users, "User"-> name
// 6)
const
newPosting
=
await
postDb
.
createPosting
({
const
newPosting
=
await
postDb
.
createPosting
({
title
,
title
,
text
,
text
,
theme
,
theme
,
city
,
city
,
username
,
username
,
date
,
counts
,
});
});
return
res
.
json
(
newPosting
);
return
res
.
json
(
newPosting
);
});
});
export
const
post
=
asyncWrap
(
async
(
req
,
res
)
=>
{
const
{
title
,
theme
,
city
,
username
,
date
,
counts
}
=
req
.
body
;
console
.
log
(
"
body
"
,
req
.
body
);
// 1) DB postings에서 title, theme, city, username, date 불러오기
// 2) 불러온 데이터 + counts posts에 저장
// 3) DB posts에서 데이터 불러서 frontend로 보내기
});
src/db/post.db.ts
View file @
3b01ee29
...
@@ -8,16 +8,8 @@ export const createPosting = async (posting: PostingType) => {
...
@@ -8,16 +8,8 @@ export const createPosting = async (posting: PostingType) => {
theme
:
posting
.
theme
,
theme
:
posting
.
theme
,
city
:
posting
.
city
,
city
:
posting
.
city
,
username
:
posting
.
username
,
username
:
posting
.
username
,
date
:
posting
.
date
,
counts
:
0
,
});
});
return
newPosting
;
return
newPosting
;
};
};
export
const
createPost
=
async
(
post
:
PostType
)
=>
{
const
newPost
=
await
Post
.
create
({
title
:
post
.
title
,
theme
:
post
.
theme
,
city
:
post
.
city
,
date
:
post
.
date
,
counts
:
post
.
counts
,
});
};
src/db/user.db.ts
View file @
3b01ee29
...
@@ -4,7 +4,11 @@ import { IUser, User } from "../models";
...
@@ -4,7 +4,11 @@ import { IUser, User } from "../models";
export
const
createUser
=
async
(
user
:
IUser
)
=>
{
export
const
createUser
=
async
(
user
:
IUser
)
=>
{
// 비밀번호 암호화
// 비밀번호 암호화
const
hash
=
await
bcrypt
.
hash
(
user
.
password
,
10
);
const
hash
=
await
bcrypt
.
hash
(
user
.
password
,
10
);
const
newUser
=
await
User
.
create
({
email
:
user
.
email
,
password
:
hash
});
const
newUser
=
await
User
.
create
({
email
:
user
.
email
,
password
:
hash
,
name
:
user
.
name
,
});
return
newUser
;
return
newUser
;
};
};
...
...
src/models/posting.model.ts
View file @
3b01ee29
...
@@ -6,6 +6,8 @@ export interface PostingType {
...
@@ -6,6 +6,8 @@ export interface PostingType {
theme
:
string
;
theme
:
string
;
city
:
string
;
city
:
string
;
username
?:
string
;
username
?:
string
;
date
?:
string
;
counts
?:
number
;
}
}
const
postingSchema
=
new
Schema
<
PostingType
>
({
const
postingSchema
=
new
Schema
<
PostingType
>
({
...
@@ -25,6 +27,14 @@ const postingSchema = new Schema<PostingType>({
...
@@ -25,6 +27,14 @@ const postingSchema = new Schema<PostingType>({
},
},
username
:
{
username
:
{
type
:
String
,
type
:
String
,
// username: travelreport.users.findOne({id: cookie.token._id(Schema.Tpyes.ObjectId)}).name,
},
date
:
{
type
:
Date
,
default
:
Date
.
now
,
},
counts
:
{
type
:
Number
,
},
},
});
});
...
...
src/routes/index.ts
View file @
3b01ee29
...
@@ -8,6 +8,5 @@ const router = express.Router();
...
@@ -8,6 +8,5 @@ const router = express.Router();
router
.
use
(
"
/users
"
,
userRouter
);
router
.
use
(
"
/users
"
,
userRouter
);
router
.
use
(
"
/auth
"
,
authRouter
);
router
.
use
(
"
/auth
"
,
authRouter
);
router
.
use
(
"
/posts
"
,
postRouter
);
router
.
use
(
"
/posts
"
,
postRouter
);
//posting함수 -> mongodb에 posts json형식으로 저장
export
default
router
;
export
default
router
;
src/routes/post.route.ts
View file @
3b01ee29
import
express
from
"
express
"
;
import
express
from
"
express
"
;
import
{
postCtrl
}
from
"
../controllers
"
;
import
{
postCtrl
,
authCtrl
}
from
"
../controllers
"
;
const
router
=
express
.
Router
();
const
router
=
express
.
Router
();
router
.
route
(
"
/
"
).
post
(
postCtrl
.
posting
);
router
.
route
(
"
/
"
).
post
(
authCtrl
.
requireLogin
,
postCtrl
.
posting
);
export
default
router
;
export
default
router
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment