서버에 몽고db에 저장된 비디오의 데이터를 가져오려고 하는데,
계속 데이터를 가져오지 못한다고 브라우저에 뜨는.. 뭐지?
이 부분은 데이터를 읽어오기전에 먼저 html소스를 가져와서
이런 에러 페이지가 떠버림. 이건 조건부렌더링으로 처리해서 해결.
코드를 보면
// a태그의 href속성에서 props로 넘겨준 videoId
const videoId = props.match.params.videoId;
// db에 videoId 정보를 전달해줄 인자 variable
const variable = { videoId: videoId };
// state를 통해 비디오 정보를 저장하고 쓸 수 있게 해줌.
// 기본적으로 비디오 정보를 배열로 담아오기 때문에
// 배열로 초기화
const [VideoDetail, setVideoDetail] = useState([]);
useEffect(() => {
Axios.post("/api/video/getVideoDetail", variable).then((response) => {
if (response.data.success) {
//console.log(response.data)
setVideoDetail(response.data.videoDetail);
} else {
console.log(response.data)
alert("비디오 정보를 가져오길 실패했습니다.");
}
})
})
router.post("/getVideoDetail", (req, res) => {
// 비디오 정보를 가져온다.
//console.log(req.body);
Video.findOne({"_id": req.body.videoId})
.populate("writer")
.exec((err, videoDetail) => {
if(err) return res.status(400).send(err);
return res.status(200).json({success: true, videoDetail})
})
});
//native_parser를 사용하지 않은 경우
//(_id의 값을 직접 설정한 경우)
var BSON = require('mongodb').BSONPure;
var o_id = BSON.ObjectID.createFromHexString(theidID);
//native_parser를 사용하지 않는 경우
//(_id의 값을 직접 설정하지 않고 document가 만들어질 때 자동생성 된 경우)
var BSON = require('mongodb').BSONNative;
var o_id = BSON.ObjectID.createFromHexString(theidID);
var ObjectId = require('mongoose').Types.ObjectId;
var query = { campaign_id: new ObjectId(campaign._id) };
router.post("/getVideoDetail", (req, res) => {
// 비디오 정보를 가져온다.
//console.log(req.body);
let ObjectId = require('mongoose').Types.ObjectId;
let videoId = req.body.videoId;
Video.findOne({"_id": new ObjectId(videoId)})
.populate("writer")
.exec((err, videoDetail) => {
if(err) return res.status(400).send(err);
return res.status(200).json({success: true, videoDetail})
})
});