[클론코딩] 유튜브 8일차
💕 진도
[풀스택] 유튜브 클론코딩
3.5~3.12 강의
😁 Multer
- multer는 form post에서 file 처리를 쉽게 해주는 라이브러리이다.
- 이를 이용하면 file의 url 및 정보를 쉽게 알 수 있다.
🤣 그 밖의 코드들
// videoController.js
import routes from "../routes";
import Video from "../models/Video";
export const home = async (req, res) => {
try {
const videos = await Video.find({}).sort({
'_id': -1
});
res.render("home", {
pageTitle: "Home",
videos,
}); // 이건 프레임워크 규약
} catch (error) {
console.log(error);
res.render("home", {
pageTitle: "Home",
videos: [],
}); // 이건 프레임워크 규약
}
};
export const search = async (req, res) => {
const {
query: {
term: searchingBy
},
} = req;
let videos = []
try {
videos = await Video.find({
title: {
$regex: searchingBy,
$options: "i"
}
})
} catch (error) {
console.log(error)
}
res.render("search", {
pageTitle: "Search",
searchingBy,
videos
});
};
export const getUpload = (req, res) =>
res.render("upload", {
pageTitle: "Upload",
});
export const postUpload = async (req, res) => {
const {
body: {
title,
description
},
file: {
path
},
} = req;
// To do: upload and save video
const newVideo = await Video.create({
fileUrl: path,
title,
description,
});
res.redirect(routes.videoDetail(newVideo.id));
};
export const videoDetail = async (req, res) => {
const {
params: {
id
},
} = req;
try {
const video = await Video.findById(id);
res.render("videoDetail", {
pageTitle: video.title,
video,
});
} catch (error) {
console.log(error);
res.redirect(routes.home);
}
};
export const getEditVideo = async (req, res) => {
const {
params: {
id
},
} = req;
try {
const video = await Video.findById(id);
res.render("editVideo", {
pageTitle: `Edit ${video.title}`,
video,
});
} catch (error) {
console.log(error);
res.redirect(routes.home);
}
};
export const postEditVideo = async (req, res) => {
const {
params: {
id
},
body: {
title,
description
},
} = req;
try {
await Video.findOneAndUpdate({
_id: id,
}, {
title,
description,
});
res.redirect(routes.videoDetail(id));
} catch (error) {
console.log(error);
res.redirect(routes.home);
}
};
export const deleteVideo = async (req, res) => {
const {
params: {
id
}
} = req
try {
await Video.findOneAndDelete({
_id: id
})
} catch (error) {
console.log(error)
}
res.redirect(routes.home)
}
Author And Source
이 문제에 관하여([클론코딩] 유튜브 8일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@devgosunman/클론코딩-유튜브-8일차-9nk6gp8f
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- multer는 form post에서 file 처리를 쉽게 해주는 라이브러리이다.
- 이를 이용하면 file의 url 및 정보를 쉽게 알 수 있다.
🤣 그 밖의 코드들
// videoController.js
import routes from "../routes";
import Video from "../models/Video";
export const home = async (req, res) => {
try {
const videos = await Video.find({}).sort({
'_id': -1
});
res.render("home", {
pageTitle: "Home",
videos,
}); // 이건 프레임워크 규약
} catch (error) {
console.log(error);
res.render("home", {
pageTitle: "Home",
videos: [],
}); // 이건 프레임워크 규약
}
};
export const search = async (req, res) => {
const {
query: {
term: searchingBy
},
} = req;
let videos = []
try {
videos = await Video.find({
title: {
$regex: searchingBy,
$options: "i"
}
})
} catch (error) {
console.log(error)
}
res.render("search", {
pageTitle: "Search",
searchingBy,
videos
});
};
export const getUpload = (req, res) =>
res.render("upload", {
pageTitle: "Upload",
});
export const postUpload = async (req, res) => {
const {
body: {
title,
description
},
file: {
path
},
} = req;
// To do: upload and save video
const newVideo = await Video.create({
fileUrl: path,
title,
description,
});
res.redirect(routes.videoDetail(newVideo.id));
};
export const videoDetail = async (req, res) => {
const {
params: {
id
},
} = req;
try {
const video = await Video.findById(id);
res.render("videoDetail", {
pageTitle: video.title,
video,
});
} catch (error) {
console.log(error);
res.redirect(routes.home);
}
};
export const getEditVideo = async (req, res) => {
const {
params: {
id
},
} = req;
try {
const video = await Video.findById(id);
res.render("editVideo", {
pageTitle: `Edit ${video.title}`,
video,
});
} catch (error) {
console.log(error);
res.redirect(routes.home);
}
};
export const postEditVideo = async (req, res) => {
const {
params: {
id
},
body: {
title,
description
},
} = req;
try {
await Video.findOneAndUpdate({
_id: id,
}, {
title,
description,
});
res.redirect(routes.videoDetail(id));
} catch (error) {
console.log(error);
res.redirect(routes.home);
}
};
export const deleteVideo = async (req, res) => {
const {
params: {
id
}
} = req
try {
await Video.findOneAndDelete({
_id: id
})
} catch (error) {
console.log(error)
}
res.redirect(routes.home)
}
Author And Source
이 문제에 관하여([클론코딩] 유튜브 8일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@devgosunman/클론코딩-유튜브-8일차-9nk6gp8f
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// videoController.js
import routes from "../routes";
import Video from "../models/Video";
export const home = async (req, res) => {
try {
const videos = await Video.find({}).sort({
'_id': -1
});
res.render("home", {
pageTitle: "Home",
videos,
}); // 이건 프레임워크 규약
} catch (error) {
console.log(error);
res.render("home", {
pageTitle: "Home",
videos: [],
}); // 이건 프레임워크 규약
}
};
export const search = async (req, res) => {
const {
query: {
term: searchingBy
},
} = req;
let videos = []
try {
videos = await Video.find({
title: {
$regex: searchingBy,
$options: "i"
}
})
} catch (error) {
console.log(error)
}
res.render("search", {
pageTitle: "Search",
searchingBy,
videos
});
};
export const getUpload = (req, res) =>
res.render("upload", {
pageTitle: "Upload",
});
export const postUpload = async (req, res) => {
const {
body: {
title,
description
},
file: {
path
},
} = req;
// To do: upload and save video
const newVideo = await Video.create({
fileUrl: path,
title,
description,
});
res.redirect(routes.videoDetail(newVideo.id));
};
export const videoDetail = async (req, res) => {
const {
params: {
id
},
} = req;
try {
const video = await Video.findById(id);
res.render("videoDetail", {
pageTitle: video.title,
video,
});
} catch (error) {
console.log(error);
res.redirect(routes.home);
}
};
export const getEditVideo = async (req, res) => {
const {
params: {
id
},
} = req;
try {
const video = await Video.findById(id);
res.render("editVideo", {
pageTitle: `Edit ${video.title}`,
video,
});
} catch (error) {
console.log(error);
res.redirect(routes.home);
}
};
export const postEditVideo = async (req, res) => {
const {
params: {
id
},
body: {
title,
description
},
} = req;
try {
await Video.findOneAndUpdate({
_id: id,
}, {
title,
description,
});
res.redirect(routes.videoDetail(id));
} catch (error) {
console.log(error);
res.redirect(routes.home);
}
};
export const deleteVideo = async (req, res) => {
const {
params: {
id
}
} = req
try {
await Video.findOneAndDelete({
_id: id
})
} catch (error) {
console.log(error)
}
res.redirect(routes.home)
}
Author And Source
이 문제에 관하여([클론코딩] 유튜브 8일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@devgosunman/클론코딩-유튜브-8일차-9nk6gp8f저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)