[node] 기본구성 > Flutter/Dart/Node

본문 바로가기
사이트 내 전체검색

Flutter/Dart/Node

[node] 기본구성

페이지 정보

작성자 sbLAB 댓글 0건 조회 2,791회 작성일 22-02-22 23:11

본문


13f5cd6d57664efa8e1edfb2f6398fb2_1645538635_5373.png


nodejs 프로그래밍(RestApi) 기본구성

1) index.js  -  메인도입부

2) routes -> myRouter.js  url 라우팅 설정

3) controllers -> myCtrl.js 등 컨트롤러들

4) model -  데이타모델 상세


 index.js ---> 호출url에 따른 routes 라우팅 분기(컨트롤러 작업선택) ---> controllers 컨트롤러들(DB연결 결과리턴) 



//controllers - myCtrl

const connection = require('../dbConfig');

const myCtrl = {
        //getListAll - 전체목록
        getListAll:async(req, res)=>{
            const sql = `SELECT * FROM friends`;  
            connection.query(sql, (error, rows)=> {
            if(error)console.log("failed");
            res.send(rows);
        });    
        },

        //getListOne - id 1행
        getListOne:async(req, res)=>{
            const id = req.params.id;
            const sql = `SELECT * FROM friends WHERE id = ${id}`;
            connection.query(sql, (error, rows)=> {
                if(error)console.log("failed");
                res.send(rows);
            });    
        },

        //getListOneSimple - id 1행 다른방법
        getListOneSimple:async(req, res)=>{
            const sql = `SELECT * FROM friends WHERE id = ?`;
            connection.query(sql,[req.params.id], (error, rows)=> {
                if(error)console.log("failed");
                res.send(rows);
            });    
        },

        //insertList  - 행추가(필드고정)
        insertList:async(req, res)=>{
         const {name, age} = req.body;
         const sql = `INSERT INTO friends(name,age) VALUES('${name}',${age})`;
         connection.query(
             sql,(error, rows)=>{
                if(error)console.log("failed");
                 res.send(rows);
             }
         )
    },

        //insertListSimple - 행추가 다른방법(필드유연)
        insertListSimple:async(req, res)=>{
            const sql = `INSERT INTO friends SET ?`;
            connection.query(
                sql,req.body,(error, rows)=>{
                    if(error)console.log("failed");
                    res.send(rows);
                }
            )
        },

        //updateJsonAll - id 1행 업데이트 - JSON으로 id값 까지 받을때  {"id": 4,"name": "amy","age": 20}
        updateJsonAll:async(req, res)=>{
            const {id} = req.body;
            const sql = `UPDATE friends SET ? WHERE id=${id}`;
            connection.query(
                sql,req.body,(error, rows)=>{
                    if(error)console.log("failed");
                    res.send(rows);
                }
            )
        },

        //updateById - id 1행  - http://localhost:4000/api/updatebyid/4  JSON {"age": 200 }
        updateById:async(req, res)=>{
            const id = req.params.id;
            const sql = `UPDATE friends SET ? WHERE id=${id}`;
            connection.query(
                sql,req.body,(error, rows)=>{
                    if(error)console.log("failed");
                    res.send(rows);
                }
            )
        },

        //deleteOne -  id 1행 삭제
        deleteOne:async(req, res)=>{
            const sql = `DELETE FROM friends WHERE id=?`;
            connection.query(
                sql,[req.params.id],(error, rows)=>{
                    if(error)console.log("failed");
                    res.send(rows);
                }
            )
        }

}

//exports
module.exports = myCtrl;
 




//routes - Router

const myCtrl = require('../controllers/myCtrl');
const router = require('express').Router();

// api/listall
router.route('/listall')
    .get(myCtrl.getListAll);  

// api/listone
router.route('/listone/:id')
    .get(myCtrl.getListOne);      

// api/listonesimple
router.route('/listonesimple/:id')
    .get(myCtrl.getListOneSimple);

// api/add
router.route('/add')  
    .post(myCtrl.insertList);

// api/addsimple    
router.route('/addsimple')  
    .post(myCtrl.insertListSimple);    

// api/updatejsonall    
router.route('/updatejsonall')  
    .put(myCtrl.updateJsonAll) ;

// api/updatebyid
router.route('/updatebyid/:id')  
    .put(myCtrl.updateById) ;    

// api/deleteone
router.route('/deleteone/:id')
    .delete(myCtrl.deleteOne);

//exports
module.exports=router;
 




//index.js

const express = require('express');
const fs = require('fs');
const cors = require('cors');
const path = require('path');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
app.use(express.json());
app.use(cors());

const port = 4000;
app.listen(port, ()=> {
    console.log("Server Listen.....", port)
});

//class Model
const friendModel = require('./model/FriendModel');
let a = new friendModel();
a.setName("sname");
a.setAge(100);
console.log(a.getName());

//class Model2
const friendModel2 = require('./model/FriendModel2');
let a2 = new friendModel2();
a2.name="2name";
a2.age=200;
console.log(a2.name + "--" + a2.age);

//class Model2 constructor
let a3 = new friendModel2("3name",300);
console.log(a3.name + "--" + a3.age);


//Route
app.use('/api', require('./routes/myRouter'));
 




//데이타모델(FriendModel2)

module.exports = class FriendModel2{
    constructor(name,age) {
        this._name = name;
        this._age = age;
      }
     
      get name(){ return this._name; }
      set name(newName){ if(newName){this._name=newName;} }

      get age(){ return this._age; }
      set age(newAge){ if(newAge){this._age=newAge;} }
};
 


댓글목록

등록된 댓글이 없습니다.

회원로그인

접속자집계

오늘
431
어제
407
최대
1,279
전체
212,201

그누보드5
Copyright © sebom.com All rights reserved.