앞의 게시글에서 Timeline, Calendar 데이터를 MongoDB에 저장했다. 기존에 FE 개발할 때는 API를 호출하고, 가짜 데이터를 리턴해주고 있었는데 실제 데이터를 조회해본다
달력 데이터를 조회할때 필요한 매개변수는 userId
만 필요하다
body에 owner:userId
로 담아서 매개변수로 넘겼는데, 이때 body를 넘기는 경우에 api 종류를 POST로 해야한다.. GET으로는 매개변수를 넘길 수 없는것 같다 자세한건 나중에 찾아봐야할듯
여튼 ID를 담아서 API를 호출하면 서버쪽에서 그 ID로 calendar 데이터 찾아서 리턴하면된다
우선 mongoose를 이용해서 읽어와야하므로 당연히 라인 2번에 mongoose 넣어주고
다뤄야할 Calendar 모델을 읽어야하므로 라인 5번도.
라인 15번에 find로 where절을 완성해준다
find({ 칼럼명 : 조회조건, 칼럼명2: 조회조건2}, ...)
이런식으로 할 수도 있고, 구글링해보니 find().where(...).where(...)
이런식으로도 가능하다고 한다
{$in: 조건}
은 like 조회조건이라고 한다.
쿼리를 만들고 나면, exec()
함수로 실행시켜서 결과를 리턴받고 그걸 담아서 FE로 넘기면 된다
그러면 다시 FE쪽에서는 response
로 결과 받아서 비즈니스 로직에 따라 처리한다. setHighlightArray
해서 캘린더에 하이라이트되어서 표시된다
polyline 데이터를 조회할 때는, userId와 선택한 날짜가 필요하다
API 날릴 때 POST로 날리는데, 위와 마찬가지로 body에 다 넣어서 해도 되긴하지만, 나눠서 처리해보았다
위와 마찬가지로 userId와 date를 조회조건으로 설정해서 결과를 리턴받아서 FE로 넘겨준다
calendar.js
const express = require('express');
const mongoose = require('mongoose');
const router = express.Router();
const multer = require('multer')
const { Calendar } = require('../models/Calendar')
//=================================
// Calendar
//=================================
router.post('/', (req, res) =>{
let userId = req.body.owner
//console.log('>> userId',userId)
Calendar.find({ owner: { $in: userId}})
.exec((err, calendarInfo) => {
if(err) return res.status(400).json({success:false, err})
return res.status(200).json({
success:true,
calendarInfo:calendarInfo
})
})
})
module.exports = router;
polyline.js
const express = require('express');
const router = express.Router();
const multer = require('multer')
const fs = require('fs')
const moment = require("moment")
const { User } = require("../models/User")
const { Timeline } = require('../models/Timeline')
const { Calendar } = require('../models/Calendar')
const lodash = require('lodash');
//=================================
// Polyline
//=================================
router.post('/datas', (req, res) =>{
let userId = req.body.owner
let inputDate = req.query.date
//console.log('==> inputDate', inputDate)
Timeline.find({ owner: { $in: userId}, date: inputDate})
.exec((err, polylineInfo) => {
if(err) return res.status(400).json({success:false, err})
return res.status(200).json({
success:true,
polylineInfo:polylineInfo
})
})
})