채용 공고 웹 사이트: 게시물 작성
15443 단어 opinejavascriptreactwebdev
목차
Sokhavuth TIN ・ 8월 11일 ・ 2분 읽기
GitHub: https://github.com/Sokhavuth/opine-job
데노 배치: https://khmerweb-job.deno.dev/users/post
우리는 필요에 따라 다른 결과를 얻기 위해 하나의 경로에 대해 다른 핸들러와 함께 다른 HTTP 메서드를 사용할 수 있다는 것을 이미 알고 있습니다. 예를 들어 "/users/post"경로와 함께 HTTP GET 메서드를 사용하여 대시보드에 게시 페이지를 표시할 수 있으며 동일한 경로 "/users/post"와 함께 HTTP POST 메서드를 사용하여 게시물을 생성하고 삽입할 것입니다. MongoDB 데이터베이스에 항목.
게시물을 작성하고 데이터베이스에 삽입하는 작업은 등록된 사용자에게만 예약되어 있으므로 인증 여부를 확인하기 위해 이 경로를 사용하려는 사람을 확인하여 이 "/users/post"경로를 방어해야 합니다.
// routes/users/post.js
import { Router } from "../../deps.ts";
const router = new Router();
import post from "../../controllers/users/post.js"
router.get("/", async (req, res) => {
if(await req.mysession.get("user")){
post.getPage(req, res);
}else{
res.redirect("/users");
}
});
router.post("/", async (req, res) => {
if(await req.mysession.get("user")){
post.createPost(req, res);
}else{
res.redirect("/users");
}
})
export default router;
// controllers/users/post.js
import post from "../../views/users/post.jsx";
import postdb from "../../models/post.ts";
class Post{
async getPage(req, res){
const config = req.mysetting();
config.page_title = "Post Page";
config.route = "/users/post";
config.username = (await req.mysession.get("user")).title;
const html = await post(config);
res.send(html);
}
async createPost(req, res){
if((await req.mysession.get("user")).role in {'Admin':1,'Editor':1,'Author':1}){
await postdb.createPost(req);
}
res.redirect("/users/post");
}
}
export default new Post();
// models/post.ts
interface PostSchema {
_id: ObjectId;
id: string;
title: string;
content: string;
categories: string[];
thumb: string;
date: string;
userid: string;
}
class Post{
async count(req, query={}){
const posts = req.mydb.collection<PostSchema>("posts");
return await posts.countDocuments(query);
}
async createPost(req){
const id = crypto.randomUUID();
let categories: string[];
if(req.body.categories.includes(',')){
categories = req.body.categories.split(',');
}else{
categories = [req.body.categories]
}
const new_post = {
id: id,
title: req.body.title,
content: req.body.content,
categories: categories,
thumb: req.body.thumb,
date: req.body.datetime,
userid: (await req.mysession.get("user")).id,
}
const posts = req.mydb.collection<PostSchema>("posts")
await posts.insertOne(new_post)
}
}
export default new Post();
Reference
이 문제에 관하여(채용 공고 웹 사이트: 게시물 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sokhavuth/job-announcement-website-creating-post-item-3cdl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)