|옐프캠프| 캠프장 CRUD
11996 단어 htmlwebdevcssjavascript
-Introducing YelpCamp Final Project
-Creating the Basic Express App
-Campground Model Basics
-Seeding Campgrounds
-Campground Index
-Campground Show
-Campground New and Create
-Campground Edit and Update
-Campground Delete
YelpCamp 최종 프로젝트를 소개합니다
이것이 하나의 대규모 애플리케이션 구축의 시작입니다.
다음은 내가 구축할 항목에 대한 개요입니다.
YelpCamp의 목적은 yelp가 작동하는 방식과 유사하게 캠프장을 찾고 검토하는 장소입니다.
앱은 홈페이지/클러스터 지도/인증/캠핑장 게시물 새로 만들기/리뷰 페이지로 구성됩니다.
시작할 코드:
망아지 / 옐프캠프
노드 모듈 종속성을 추가하려면 npm install을 실행해야 합니다.
기본 익스프레스 앱 만들기
터미널 유형에서
npm init -y
그런 다음 express, mongoose 및 ejs를 설치하십시오.
npm i express mongoose ejs
그런 다음 이 프로젝트를 구축할 추가 파일 구조를 설정합니다.
캠프장 모델 기본 사항
캠프장을 위한 몽구스 모델 설정.
각 캠프장에는 이름/제목, 가격, 설명 및 위치가 있습니다.
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const CampgroundSchema = new Schema({
title: String,
prince: String,
description: String,
location: String
});
mondule.exports = mongoose.model('Campground', CampgroundSchema);
그런 다음 몽구스가 연결되어 있고 작동하는지 확인해야 합니다.
시딩 캠프장
이제 데이터로 캠핑장을 설정할 차례입니다.
여기에서 데이터베이스를 시드할 데이터 세트를 찾을 수 있습니다.
https://github.com/Colt/YelpCamp/blob/c12b6ca9576b48b579bc304f701ebb71d6f9879a/seeds/cities.js
캠프장 색인
이제 기본 경로 및 템플릿 기능을 설정할 시간입니다.
setting up the route
app.get('/campgrounds', async (req,res) => {
const campground = await Campground.find({})
res.render('campgrounds/index')
})
HTML 템플릿 설정
<h1>All Campgrounds</h1>
<ul>
<% for (let campgrounds of campgrounds %>
<li><%= campgrounds.title %></li>
<% }%>
</ul>
캠프장 쇼
쇼 경로는 결국 캠프장의 세부 정보 페이지가 됩니다.
경로 설정
app.get('/campgrounds/:id', async(req, res) => {
res.render('campgrounds/show')
})
HTML 템플릿 설정
<h1><%= campground.title %></h1>
<h2><%= campground.location %></h2>
캠프장 신규 및 생성
양식 렌더링
<form action="/campgrounds" methods="POST">
<div>
<label for="title">Title</label>
<input type="text" id="title" name="campground[title]">
</div>
<div>
<label for="location">Location</label>
<input type="text" id="location" name="campground[location]">
</div>
<button>Add Campground</button>
</form>
경로 설정
app.post('/campgrounds', async (req, res) => {
const campground = new Campground(req.body.campground);
await campground.save();
res.redirect(`/campgrounds/${ campground._id });
});
캠프장 편집 및 업데이트
양식을 제공하는 경로
app.get('/campgrounds/:id/edit', async(req, res) => {
const campground = await Campground.findById(req.params.id)
res.render('campgrounds/edit', { campground }));
})
HTML 템플릿
<h1>Edit Campgrounds</h1>
<form action="/campgrounds" methods="POST">
<div>
<label for="title">Title</label>
<input type="text" id="title" name="campground[title]">
</div>
<div>
<label for="location">Location</label>
<input type="text" id="location" name="campground[location]">
</div>
<button>Add Campground</button>
</form>
캠프장 삭제
경로는 삭제 경로가 됩니다.
app.delete('/campgrounds/:id', async (req, res) => {
const { id } = req.params;
await Campground.findByIdAndDelete(id);
res.redirect('/campgrounds');
})
HTML 템플릿
<h1><%= campground.title %></h1>
<h2><%= campground.location %></h2>
<p> <a href="/campgrounds/<%=campground_id%>/edit">Edit</a>
</p>
<p>
<form action="/campgrounds/<%=campground._id%>?_method=DELETE" method="POST">
<button>Delete</button>
</form>
</p>
<footer>
<a href="/campgrounds">All Campgrounds</a>
</footer>
이제 기본 구조가 설정되었으므로 yelp 캠프 웹 애플리케이션의 복잡성을 구축할 차례입니다.
Reference
이 문제에 관하여(|옐프캠프| 캠프장 CRUD), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/code_regina/yelpcamp-campgrounds-crud-5hbg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)