2013-06-17 2 views
0

저는 개발중인 시스템을위한 새 모듈을 작성하려고합니다. 우리는 customers 테이블을 포함하는 MySQL 데이터베이스 (그래서 나는 node-mysql을 사용하고 있습니다)를 사용합니다.NodeJS 모듈 패턴

는 내가 달성하고자하는 것은 : 모듈의

  • 외부 내가 1 고객 ID입니다 var C = new Customer(1)을 찾고 있어요.
  • 이제이 고객으로부터 무언가를 얻으려는 경우 C.email 또는 C.first_name을 입력하면 값이 반환됩니다.

    C.set('email', '[email protected]')

은 무엇 이러한 모델을 만드는 가장 좋은 패턴이 될 것입니다 :

  • 나는이 고객 C.email = '[email protected]' 혹은 다시 값을 설정할 수 있어야합니다?

  • 답변

    0

    나는 이미 요구하지만 정확히 무슨 ... 이런 일이 .... 내가 핵심 부분을 일반화하고 여기이 도움이 될 것입니다 code..Hope은 그 에 매우 가까운

    var mysql = require('mysql'); 
    var con = mysql.createConnection({ 
    host:"yourHostName", 
    user:"yourUserName", 
    password:"yourPassword" 
    }); 
    con.query("use databaseName"); 
    function getCustomerDetails(custId){ 
    con.query("select * from customer where custId = "+custId,function(err,result,fields){ 
    if(!err) 
        return result; 
    else 
        console.log(err); 
    }); 
    } 
    function updateCustomerDetails(custId,fieldName,fieldValue){ 
    con.query("update customer set "+fieldName+" = "+fieldValue+" where custId =  "+custId,function(err,result,fields){ 
        if(!err) 
         return true; 
        else 
         console.log(err); 
         return false; 
    }); 
    } 
    exports.getCustomerDetails = getCustomerDetails; 
    exports.updateCustomerDetails = updateCustomerDetails; 
    

    그리고 당신이 그럼 당신은 당신이 당신이 다음 문자열 값 으로 모든 필드를 업데이트하는 경우하십시오이다 돌봐하기 위해 필요한이

    var C = require('./dbAccessModule'); 
    result = C.getCustomerDetails(1); 
    console.log(result.fieldName); 
    
    var success = C.updateCustomerDetails(1,'name','sumit');   
    if(success) 
    console.log('Table Updated successfully....'); 
    else 
    // take necessary action according to your application 
    

    한 가지 같은 기능을 사용할 수 있습니다 dbAccessModule.js 같이 모듈을 저장 한 가정 잊지 마라. fieldValue 값을 작은 따옴표로 묶으십시오.

    이 당신이 다음을 무시하세요 위해 무엇을 요구하지 않으면 ....

    0

    나는 최근에 당신은 그들이 당신의 요구에 맞게 있는지 체크 아웃에 관심이있을 수있는 두 개의 데이터베이스 모듈 생성 - ORM : http://bookshelfjs.org 및 쿼리 빌더 :

    // Create the base customer object 
    var Customer = Bookshelf.Model.extend({ 
        tableName: 'customers' 
    }); 
    
    // Create a new customer instance with an id of 1, fetch it, and then 
    // act on the result model 'customer'. 
    new Customer({id: 1}).fetch().then(function(customer) { 
        console.log(customer.get('name')) 
        customer.set('email', '[email protected]') 
        return customer.save(); 
    }); 
    
    : http://knexjs.org

    ORM이

    그래서 Backbone.js의 디자인 패턴의 오프를 기반으로, 당신은 이런 식으로 뭔가를 할 수있을 것3210

    기본 고객 클래스를 확장하여 원하는 구문과 비슷한 단축 구문을 사용할 수도 있습니다.

    // Create the base customer object, with a static findOne method. 
    var Customer = Bookshelf.Model.extend({ 
        tableName: 'customers' 
    }, { 
        find: function(id) { 
        return new this({id: id}).fetch(); 
        } 
    }); 
    
    Customer.find(1).then(function(C) { 
        console.log(C.get('name')) 
        C.set('email', '[email protected]') 
    });