Nodejs ajax-post mongodb로 데이터 보내기
강의에도 없어서, 이것저것 뒤지고, 뒤지고 뒤지다가 간신히 했다. 어휴 진짜..ㅠ
내가 뭘 어떻게 한지도 모르겠넹..
파이썬 flask로 했으면 바로 했을 텐데ㅠㅠ node는 클라이언트쪽을 잘 거치지 않고 서버쪽에서 뭔가 한 번에 내리고, 보내줘서 신기했다.
<html> or <ejs>
<div style="text-align:center; margin-top:50px;">
<div style="margin-top:20px;">
작성자 <input type=text placeholder="작성자" id="person22"> <br><br>
비밀번호 <input type=text placeholder="비밀번호" id="pwds"> <br><br>
제목 <input type=text placeholder="제목" id="name9"> <input type=text placeholder="주제" id="cate"><br><br>
내용<br>
<textarea placeholder="내용을 입력해주세요." id="contents"></textarea><br>
<button onclick="makeReview()">저장하기!</button>
</div></div>
각각 input의 id값들
person22
pwds
name9
contents
를 ajax로 가져온다.
function makeReview() {
let names = $('#name9').val()
let contents01 = $('#contents').val()
let person00 = $('#person22').val()
let pwd = $('#pwds').val()
let cate = $('#cate').val()
$.ajax({
type: "POST",
url: "/api/save",
data: {
"name": names,
"person": person00,
"content": contents01,
"pwd": pwd,
"category": cate
},
success: function (response) {
alert("저장 완료!");
window.location.reload();
}
})
}
함수를 호출 한다.
여기서 중요한건 어차피 routers을 쓸거니까
routers는 api를 무조건 거치니 /api/save로 url에 접근하고,
서버단에서는 api에서 관리되는 js 파일에다가 /save 만해놓고 POST를 받을 거다.
data를 내려줄때는 name_give 이딴거 하지말고 그냥 db값이랑 똑같이 가져가자.. 이유가 있다.....
<server>
router.post("/save", async (req, res) => {
try {
const name = req.body.name;
const person = req.body.person;
const content = req.body.content;
const pwd = req.body.pwd;
const category = req.body.category;
let goodsId = 0
// isExist = await Goods.find({"goodsId"})
// await는 await찍힌 부분이 들어왔을 때까지
let data = await Goods.find({}).sort("-goodsId")
if (data.length == 0) { goodsId = 1 }
else { goodsId = data[0]["goodsId"] + 1 }
// if (isExist.length == 0)
await Goods.create({
goodsId,
name,
person,
content,
pwd,
category,
day: moment().format("YYYY-MM-DD")
})
res.send({ result: "success" })
} catch (err) { console.error(err); next(err); }
});
/save에 post요청이 오면
변수부터 정해준다.
밑에 let data ~ else 이 부분은 goodsId의 중복을 방지하고 데이터가 하나씩 추가로 들어올 때마다 바로 전의 데이터와 비교해서
입력받을 때마다 바로 전 데이터의 goodsld 보다 +1씩 해준다.
Goods.create가 db로 가져가는 것이다.
신기한 것은
goodsId : goodsId
age : 28
이렇게 가져가는게 아니라,
그냥 저렇게 냅다 변수랑 db에 있는 키값이랑 똑같으면 알아서 가져간다ㅡㅡ
'Back > Node.js' 카테고리의 다른 글
Node.js 개념 및 특성 (0) | 2021.03.24 |
---|---|
Node.js 게시판 글 수정하기 (0) | 2021.03.22 |
npm 설치 했을 때 오류 :: npm update check failedTry running with sudo or get accessto the local update config store viasudo chown -R $USER:$(id -gn$USER) /home/ubuntu/.config (0) | 2021.03.21 |
Node.js moment 모듈 (0) | 2021.03.20 |
노드js - nodemailer 모듈 (0) | 2021.03.20 |