📌models/challenge.js
모듈 불러오기
const mongoose = require("mongoose");
//auto increment 쓸 수 있는 모듈
const autoIncrement = require("mongoose-auto-increment");
autoIncrement.initialize(mongoose.connection);
객체 형식으로 스키마 작성
const ChallengeSchema = new mongoose.Schema({
//챌린지 인덱스 (자산, 건강, 역량, 관계, 취미분야 1~5)
challengeIndex: {
type: Number,
},
//작성자 아이디
registerId: {
type: String,
required: true,
},
//카테고리
category: {
type: String,
required: true,
},
//챌린지 제목
challengeName: {
type: String,
required: true,
},
//인증 방법(text)
howTo: {
type: String,
required: true,
},
//인증 횟수
howMany: {
type: Number,
required: true,
},
//시작일
startDate: {
type: Date,
required: true,
},
//종료일
finishDate: {
type: Date,
required: true,
},
//참가비
deposit: {
type: Number,
required: true,
},
//조회수
views: {
type: Number,
},
//참가자 수
partNum: {
type: Number,
},
});
인덱스 auto increment 설정
ChallengeSchema.plugin(autoIncrement.plugin, {
model: "challengeSchema", //모델명
field: "challengeIndex", //자동증가할 db컬럼명
startAt: 1, //시작
increment: 1, // 증가
});
스태틱 메서드로 main에서 쓸 함수 추가
ChallengeSchema.statics.findByChallengeName = function (challengeName) {
return this.findOne({ challengeName });
};
스키마 만든 거 모델로 내보내기
const Challenge = mongoose.model("Challenge", ChallengeSchema);
module.exports = Challenge;
📌routes/main/index.js
사용할 라우터 추가하기
const challenge = require("./challenge");
router.use("/challenge", challenge);
📌routes/main/challenge.js
필요한 모듈 불러오기
const Challenge = require("../../models/challenge");
const express = require("express");
const router = express.Router();
POST 라우터로 들어온 데이터 정의하기
router.post("/", async (req, res) => {
console.log("여긴 챌린지 등록");
const {
registerId,
category,
challengeName,
howTo,
howMany,
startDate,
finishDate,
deposit,
} = req.body;
등록한 챌린지인지 데이터 확인
try {
//등록된 챌린지인지 확인
const exists = await Challenge.findByChallengeName(challengeName);
if (exists) {
return res
.status(400)
.json({ error: [{ msg: "That challenge already exists" }] });
}
등록되지 않았으면 데이터 객체에 넣어주고 DB에 저장 아니면 에러 띄우기
console.log("챌린지 디비 등록 들어옴");
const challenge = new Challenge({
registerId,
category,
challengeName,
howTo,
howMany,
startDate,
finishDate,
deposit,
});
await challenge.save();
res.send("챌린지 등록 성공");
} catch (e) {
console.log(e.message);
res.status(500).send("server error");
}
});
module.exports = router;
📌postman에서 데이터 POST
📌mongoDB Atlas 에서 데이터 확인
'Node.js' 카테고리의 다른 글
21.11.06 functional programming (2) | 2021.11.07 |
---|---|
21.04.27 project#4 주소에 /api 붙이는 이유 (0) | 2021.04.30 |
21.04.22 mongoDB 연결 및 postman 사용 연습 (0) | 2021.04.25 |
21.02.18 스레드풀, 워커스레드 (0) | 2021.03.06 |
21.02.18 Node.js 동작 원리, Event loop (0) | 2021.03.06 |