본문 바로가기

728x90
반응형

Javascript/Node

(38)
[node] Sequelize에서의 DB 수정 수정을 하기 위해선 수정할 데이터를 먼저 화면에 불러오는 작업이 필요하다. 즉 수정하기 버튼을 눌렀을 때 기존 데이터를 input 박스에 꽂아줘야 한다. 이 과정을 위해서 먼저 조회 로직을 추가한다. controller(controllers/admin/index.js)에 url을 지정한다. router.get('/products/edit/:id', ctrl.get_products_edit); admin.ctrl.js에 아래 소스를 추가한다. // 수정할 때 write.html의 폼을 재활용한다. // 수정을 누르면 해당하는 데이터가 조회된 후에 수정 작업을 해야하기 때문 exports.get_products_edit = (req, res) => { models.Products.findByPk(req.pa..
[node] 상세페이지 보기(findByPk로 DB 조회하기) 링크를 연결할 html(products.html) 파일에 a 태그를 추가하여 해당 url로 이동할 수 있게 한다. {{ product.name }} admin의 index.js로 가서 url을 생성한다. router.get('/products/detail/:id', ctrl.get_products_detail ) controller(admin.ctrl.js)로 이동하여 아래 소스를 추가한다. template/admin 폴더에 detail.html을 생성하고 아래의 소스 코드를 추가한다. {% set title = "관리자 : 상세페이지" %} {% extends "layout/base.html" %} {% block content -%} {{ product.name }} 작성일 : {{ product.d..
[node] Moment.js 적용 moment.js를 인스톨한다. 날짜형식을 지정할 js파일(Products.js)에 moment 관련 아래 소스를 추가한다. const moment = require('moment'); Products.prototype.dateFormat = (date) => ( //return 생략 moment(date).format('YYYY-MM-DD') ); 화면에 뿌려주는 html파일(products.html)에서 해당 함수를 불러 사용한다. {{ product.dateFormat( product.createdAt ) }} 지정한 날짜 형식으로 출력된다.
[node] Sequelize에서의 DB 조회 admin.ctrl.js(controller) 에 아래 소스 코드 추가 // admin의 index.js의 router.get('/products', ctrl.get_products )와 맵핑 exports.get_products = ( _ , res) => { //전체 조회(findAll) find라는 것도 있다. models.Products.findAll({ }).then( (productList) => { // admin/products.html에 파라미터로 받은 데이터 전달 // productList : productList를 productList로만 써도 된다 // Javascript에서 키 값과 벨류 값이 같을 때에는 한 번만 적어줘도 됨. // template은 render res.rende..
[node] Sequelize에서의 DB 입력 admin.ctrl.js(controller) 에 아래 소스 코드 추가 const models = require('../../models'); //models의 경로 exports.post_products_write = ( req , res ) => { //res.send(req.body); // sql문의 insert와 유사 models.Products.create({ name : req.body.name, //body-parser price : req.body.price , description : req.body.description }).then( () => { res.redirect('/admin/products'); // 저장하고 메인페이지로 돌아감 }); } admin/products/whi..
[node] Sequelize에서의 모델 작성 models 하위 폴더에 products.js 를 생성한다. 생성한 파일에 아래와 같이 코딩한다. sql문의 Create와 비슷하다고 보면 된다. module.exports = function(sequelize, DataTypes){ const Products = sequelize.define('Products', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, name : { type: DataTypes.STRING }, price : { type: DataTypes.INTEGER }, description : { type: DataTypes.TEXT } } ); return Products; } app.js로 돌아가 ..
[node] Sequelize DB 접속 본 포스트를 포함한 Sequelize 관련 모든 포스트는 mysql을 기반으로 작성되었으며, mysql이 반드시 설치되어 있어야 합니다. mysql 및 Workbench는 설치법을 구글링해 보시면, 간단하게 설치하실 수 있습니다. 먼저 mysql과 sequelize을 인스톨한다. .env 파일을 생성하여 DB정보를 입력한다. models라는 폴더를 생성하여 그 아래 index.js 파일을 생성한다. 생성한 index.js 파일에 아래와 같이 코딩한다. var Sequelize = require('sequelize'); var path = require('path'); var fs = require('fs'); var dotenv = require('dotenv'); dotenv.config(); //LO..
[node] nunjucks macro base.html에 아래의 소스를 추가한다. List Write {% block content %}{% endblock %} 이 후 http://localhost:3000/admin/products/ (자신이 지정한 y와 같이 자신이 지정한 포트의 url에 접근하면 메뉴바가 뜨는 것을 볼 수 있다. 현재 소스에서는 첫 번째 List에만 검정색 블록이 활성화 되어있고 Write를 클릭해도 블록이 활성화되지 않는다. 템플릿에서 현재 url에 접근이 가능해야 하기 때문에 app.js에 locals변수를 하나 추가한다. app.use( (req,res,next) => { app.locals.isLogin = false; //새로 추가한 변수 app.locals.req_path = req.path; // expr..

728x90
반응형