작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
108
0
혹시 뭐가 문제 일까요..?
const express = require('express'); // 내가 설치한 express 모듈을 가져온다.
const app = express() // 새로운 express 앱을 만든다.
const port = 5000 // 포트
const bodyParser = require('body-parser');
const {User} = require("./models/User"); // User 가져옴
//application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({extended:true})) // 바디 파서가 클라이언트에서 오는정보를 서버에서 분석해서 가져올수있게 하는것
//application/josn
app.use(bodyParser.json()); // 애는 json타입을 분석해서 가져옴
const mongoose = require('mongoose');
mongoose.connect('mongodb+srv://jin:0000@jin.p3agn.mongodb.net/?retryWrites=true&w=majority&appName=jin',{
useNewUrlParser: true, useUnifiedTopology: true
}).then(()=> console.log('MongoDB Connected...'))
.catch(err => console.log(err))
app.get('/', (req, res) => { // 앱을 넣은 후에 루트디렉토리에 오면 헬로월드 실행?
res.send('Hello World!')
})
app.post('/register',(req,res) => {
//회원 가입 할때 필요한 정보들을 클라이언트에서 가져오면
// 그것들을 데이터 베이스에 넣어준다.
const user = new User(req.body)
// user 정보들을 데이터베이스에 넣기위해 req.body로 작성하면됨
// req.body 에는 정보들 있음
user.save((err,userInfo)=>{ // 만약 저장을 할때 err가 있을때 클라이언트한테 json형식으로 알려줌
if(err) return res.json({success:false, err}) // err 메세지 전달
return res.status(200).json({ // status200은 성공했다는 의미
success:true
})
}) // save는 몽고디비에서 오는 메서드
// req.body 정보들이 user모델에 저장이됨
})
app.post('/register', async (req, res) => {
try {
const user = new User(req.body);
// user 정보들을 데이터베이스에 넣기위해 req.body로 작성하면됨
// req.body 에는 정보들 있음
const userInfo = await user.save(); // 만약 저장을 할때 err가 있을때 클라이언트한테 json형식으로 알려줌
res.status(200).json({ success: true, userInfo });
} catch (err) { // err 메세지 전달
res.json({ success: false, err });
}
});
app.listen(port, () => {
console.log(`Example app listening on port ${port}`) //앱을 포트 5000번에서 실행
})
답변 2
0
안녕하세요. 저도 비슷한 문제를 겪고, 구글링을 통해 async - await로 변경하여 해결한 교육생 입니다. 혹시, 위에서 AI 답변이 추천한 방법으로 변경하였더니(port 값 변경, 하나의 post문만 사용 등) 해결하셨나요? 저 같은 경우, Mongoose의 6.0.0 ver 부터 save() 메서드가 Promise 함수를 반환하고, 콜백 함수를 사용하지 않아야 한다는 에러가 발생해서 save 내부에 인자를 작성하지 않는 방식으로 하니 PostMan에서 결과값도 정상적으로 나오고, 실제 저의 mongoDB에도 정상적으로 데이터가 저장됨을 확인했습니다. 혹시, 강의와 같은 방식으로(save에 인자값을 보내는 방식) 했을 때 해결하셨는지 궁금합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
Postman을 사용하여 API 요청을 테스트하실 때 문제가 발생한 것 같군요. 주로 이런 경우에는 여러 문제점이 있을 수 있는데, 몇 가지 가능성을 확인해보겠습니다.
첫째, 코드상 이미 /register
라우트를 두 번 작성하셨습니다. 이 경우, 두 번째의 /register
라우트만 실행되므로 코드를 정리하셔서 라우트가 중복되지 않도록 하시는 것이 좋습니다.
둘째, 스크린샷에 따르면 요청을 http://localhost:5001/register
로 보내고 있는데, 서버는 포트 5000번에서 실행되고 있습니다. 따라서 Postman에서 요청을 http://localhost:5000/register
로 변경해보세요.
셋째, MongoDB 클러스터 연결 문자열이 올바른지 확인하세요. 현재 사용 중인 MongoDB URI와 접근 권한이 제대로 설정되어 있는지 점검해보시는 것이 좋습니다.
이와 유사한 문제에 대한 해결방법들은 다음의 링크들을 참고해주시면 더 도움이 될 것입니다:
Postman send 누르면 페이지를 찾을 수 없다고 나오네요.. 똑같이 적은거 같은데; - Postman으로 API 요청 시 페이지를 찾을 수 없다는 문제와 해결책
7강 포스트맨 질문 - 비슷한 상황의 포스트맨 요청에 대한 질문과 과정
위 두 질문 및 답변을 참고하시어 문제 해결에 도움 받으시길 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.