Node.js와 Mongodb로 회원가입을 구현하려 합니다.
조회수 589회
안녕하세요 다름이 아니라
node.js와 mongoDB로 회원가입을 구현하려고 코드를 짜는 중인데,
계속 username과 password를 가져오지를 못해서 질문 드립니다.
비전공자 두명이서 고민해도 도대체 무엇이 문제인지 알 수가 없네요 ㅠㅠ
우선, register.ejs 파일입니다.
<body>
<div class="center">
<h1>회 원 가 입</h1>
<form action= "/users/register" method="POST" enctype="multipart/form-data">
<div class="txt_field">
<input type="text" id="username" name="username" required>
<span></span>
<label>Username</label>
</div>
<div class="txt_field">
<input type="password" id="password" name="password" required>
<span></span>
<label>Password</label>
</div>
<input type="submit" value="Register" id="sendMassageButton">
</form>
</div>
</body>
storeUser.js입니다.
const User = require('../models/User.js')
const path = require('path')
module.exports = (req,res) =>{
User.create(req.body, (error, user)=>{
res.redirect('/')
})
}
User.js 입니다.
const mongoose = require('mongoose')
const UserSchema = new mongoose.Schema({
username: String,
password: String
});
//export model
const User = mongoose.model('User',UserSchema);
module.exports = User
마지막으로 index.js 입니다.
const express = require('express')
const app = new express()
const mongoose = require('mongoose');
const path = require('path')
const storeUserController = require('./controllers/storeUser')
mongoose.connect('mongodb://localhost/user_database',{
useNewUrlParser: true,
useUnifiedTopology: true});
const ejs = require('ejs')
app.set('view engine','ejs')
app.use(express.static('public'))
app.listen(4000, ()=>{
console.log('App listening on port 4000')
})
app.get('/',(req,res)=>{
res.render('index');
})
app.post('/users/register',storeUserController)
도대체 뭐가 문제일까요 ..ㅠㅠㅠㅠ register 버튼을 누르면 mongoDB에 뭐가 저장되기는 하는데... 텅텅 비어있습니다...
뭔가 register.ejs에 있는 text상자에서 username과 password를 못가져오는 거 같은데 왜이러는지 진짜 답답해서 미칠거같네요...
위에 두개는 test.js를 따로 만들어서 임의로 저장해 본 것입니다.
register 버튼을 누르면 제일 마지막처럼 이상한 녀석만 뜹니다..
ejs에서 뭔가 문제가 있는거 같은데 도대체 왜이러나요 흑흑 ...
도와주십셔...
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
express는 잘 모르긴 하는데... 높은 확률로 얘 때문입니다. 이걸 지우고 다시 해보세요.
enctype="multipart/form-data"
추정의 근거를 시시콜콜 늘어놓자면, HTML 폼에서 얘를 넣지 않은 기본적인 POST 폼은
application/x-www-formurlencoded
밈타입으로 전송이 되고, '파일 첨부'를 해야 한다거나 해서 굳이 집어넣은 폼은multipart/form-data
밈타입으로 전송이 되는데, 둘은 요청본문 값을 까서 쓰는 방법이 약간 다르고, 구현 중이신 스택은 아마도 요청이 전자로 들어올 것으로 전제하고 있을 확률이 커서 그렇습니다. 내용이 '텅 비어있다'는 건 그래서일 수 있어요.암튼 해보시고 안 되면 다시 알려주세요.
- 친절한 답변 감사합니다..! enctype="multipart/form-data"를 제거하였는데... 그래도 저장이 여전히 비어있는채로 되네요.. ㅠㅠ 알 수 없는 사용자 2021.6.6 14:25
- storeUser.js 에서 console.log(req.body) 찍으면 뭐 나오나요? 그거를 추가해서 질문글 수정해 주실수 있나요? 엽토군 2021.6.6 14:29
- console.log(req,body) 찍으니까 아예 오류가 나버리네요.. 알 수 없는 사용자 2021.6.6 15:12
- 아...! mongodb를 다시 설치했더니 갑자기 문제가 해결되었습니다.. ㅠㅠㅠ 여러모로 도와주셔서 감사합니다 ㅠㅠ 알 수 없는 사용자 2021.6.6 15:15
댓글 입력