본문 바로가기
TIL

TIL D-84 git config, crud 2탄

by 홍차23 2019. 11. 5.

git contribution 반영이 안될 때, git config 파일에서 git username, email 을 변경함으로써 반영 가능!

여태 왜 커밋이 안되나 했다. git은 참 신기하다.

 

https://webisfree.com/2018-07-26/git-config-%EC%84%A4%EC%A0%95-%ED%99%95%EC%9D%B8-%EB%B0%8F-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B8%B0

 

git config 설정 확인 및 변경하기

git을 사용하는 경우 config 설정에 대한 내용을 볼 필요가 있습니다. 예를들어 사용자 이름이나 email 등을 확인할 수 도 있겠죠

webisfree.com

오늘 배운 것>

1. show, edit, update, delete

2. ejs에서 <a tag> 로는 get 만 요청할 수 있어서 <form> 으로 Delete 를 처리한다.

3. 자바스크립트 

 

내일 공부할 것>

사진+기사 업로드 가능한 게시판 만들기

 

var express = require("express");
var mongoose = require("mongoose");
var bodyParser = require("body-parser"); //body-parser module을 bodyParser 변수에 담는다.
var methodOverride = require("method-override");
var app = express();

require('dotenv').config(); // .env파일에서 환경변수 불러오기

//DB setting
mongoose.set('useNewUrlParser', true);
mongoose.set('useFindAndModify', false);
mongoose.set('useCreateIndex', true);
mongoose.set('useUnifiedTopology', true);
mongoose.connect(process.env.MONGO_URI);

var db = mongoose.connection;

db.once("open", function() {
    console.log("DB connected");
});

db.on("error", function(err) {
    console.log("DB ERROR: ", err);
});

//Other settings
app.set("view engine", "ejs");
app.use(express.static(__dirname+"/public"));
app.use(bodyParser.json()); //form data를 req.body에 옮겨 담는다. json data
app.use(bodyParser.urlencoded({extended:true})); 
app.use(methodOverride("_method")); //_method query로 들어오는 값으로 http method를 바꾼다.

//DB schema //db에서 사용할 schema object 생성.
var contactSchema = mongoose.Schema({
    name:{type:String, required:true, unique:true}, //required:값이 반드시 입력되어야 함, unique:중복x
    email:{type:String},
    phone:{type:String}
});
var Contact = mongoose.model("contact", contactSchema); //model 생성

//Routes
//Home
app.get("/", function(req,res) {
    res.redirect("/contacts");
});

//Contacts-Index
app.get("/contacts", function(req,res){
    Contact.find({}, function(err,contacts){ //모델.find(검색조건, 콜백함수) {}=검색조건없음으로 모델의 모든데이터 리턴.
        if(err) return res.json(err);
        res.render("contacts/index", {contacts:contacts});
    });
});

//Contacts-New
app.get("/contacts/new", function(req,res){
    res.render("contacts/new");
});

//Contacts-create
app.post("/contacts", function(req,res){ //contacts/new 에서 폼을 전달받는 경우
    Contact.create(req.body, function(err, contact){ //인자 첫번째로 생성할 data의 object를 받고, 두번째로 인자의 콜백함수 받음
        if(err) return res.json(err);
        res.redirect("/contacts");
    });
});

//Contacts-Show
app.get("/contacts/:id", function(req,res){
    Contact.findOne({_id:req.params.id}, function(err,contact){
        if(err) return res.json(err);
        res.render("contacts/show", {contact:contact});})
});

//Contacts-edit
app.get("/contacts/:id/edit", function(req,res){
    Contact.findOne({_id:req.params.id}, function(err,contact){
        if(err) return res.json(err); res.render("contacts/edit", {contact:contact});    })
});

//Contacts-update
app.put("/contacts/:id", function(req,res){
    Contact.findOneAndUpdate({_id:req.params.id}, req.body, function(err,contact){ //해당 모델의 document를 찾아 그 data를 수정. (찾을 조건, 업데이트할정보, 콜백함수)
        if(err) return res.json(err); res.redirect("/contacts/"+req.params.id);    })
});

//Contacts-destroy
app.delete("/contacts/:id", function(req,res){
    Contact.deleteOne({_id:req.params.id}, function(err,contact){
        if(err) return res.json(err); res.redirect("/contacts");    })
});

//port setting
var port = process.env.PORT || 3000; //port값 설정되어 있지 않다면 3000사용.
app.listen(3000, function() {
    console.log("server on! http://localhost:"+port);
});

 

템플릿 엔진 ejs 사용 (ejs는 아직 어렵다..)

<!-- views/contacts/index.ejs -->

<!DOCTYPE html>
<html>
 <head>
  <% include ../partials/head %>
 </head>
 <body>
  <% include ../partials/nav %>

  <div class="container contact contact-index">
   <h2>Index</h2>
   <ul class="list-group">
    <% contacts.forEach(function(contact) { %>
     <li class="list-group-item">
      <a href="/contacts/<%= contact._id %>"><%= contact.name %></a>
     </li>
    <% }) %>
   </ul>
  </div>
 </body>
</html>

 

css 추가

show
edit
delete

 

  • 주소록 만들기 클리어! 
  • 새로운 인재를 영입하게 됐다. 치앙마이에 함께 갈 친구가 늘었다^^
  • 응용해서 게시판만들기->에디터 연결하기->사진+제목+글 기사 형식으로 템플릿 변형하기. 이번주 목표.

 

'TIL' 카테고리의 다른 글

TIL D-81 Nodejs 게시판  (0) 2019.11.08
TIL D-83 MongoDB  (0) 2019.11.06
Mozilla - javascript first steps  (0) 2019.11.05
Mozilla - array  (0) 2019.11.04
Mozilla - useful string methods  (0) 2019.11.04

댓글