2017-03-21 6 views
0

다음과 같이 app.js 파일이 있습니다. 내가 그것을 작성하는 방법을 잘 모릅니다 환경을 nodejs에 새로운 오전부터 나는노드 js에서 공장 설계 패턴을 구현하는 방법

var fs = require('fs'); 
var dotenv = require('dotenv'); 
dotenv.load(); 
var designtokenfile = require ('./designtokenfile'); 
var designtokendb = require ('./designtokendb'); 

DesignFactory.storeDesign = function(type) { 
if (type == 'file') { 
    return designtokenfile; 
} 
else if (type == 'db') 
{ 
return designtokendb; 
} 
}; 
module.exports.DesignFactory = DesignFactory; 

, 오류 DesignFactory가 정의되지 않은 얻고있다. 제발 도와주세요

답변

0

storeDesign 속성을 정의하기 전에 객체로 DesignFactory을 선언해야합니다. file2.js

var DesignFactory = require('./file1'); 
DesignFactory.storeDesign(/*arguments*/); 

에서

file1.js

var fs = require('fs'); 
var dotenv = require('dotenv'); 
dotenv.load(); 
var designtokenfile = require ('./designtokenfile'); 
var designtokendb = require ('./designtokendb'); 

// declare the DesignFactory variable as a plain object. 
var DesignFactory = {}; 

DesignFactory.storeDesign = function(type) { 
    if (type == 'file') { 
    return designtokenfile; 
    } else if (type == 'db') { 
    return designtokendb; 
    } 
}; 
module.exports.DesignFactory = DesignFactory; 

사용 : 당신이 의미하는 경우 데이비드 바커의 대답처럼 의 DesignFactory 당신은 자바의 클래스처럼 함수로 정의해야합니다.

function DesignFactory() {}; 
+0

감사합니다. 다른 nodejs 파일에서 storeDesign을 호출해야한다면 어떻게 호출 할 수 있습니까? storeDesign 메소드를 호출하는 코드를 도와주세요. – Sushma

0

언제든지 DesignFactory을 선언하지 않았습니다. 생성자를 선언함으로써 시작하십시오.

// Constructor ES5 
var DesignFactory = function() { ... } 

// Prototype methods (must instantiate class to use these) 
DesignFactory.prototype = { 
    storeDesign: function(type) { 
     // Code here 
    } 
} 

// Or you can use the static approach as in your code 
DesignFactory.storeDesign = function(type) { ... } 

또는 표준 개체를 사용할 수 있습니다.

var DesignFactory = {}; 

DesignFactory.storeDesign = function(type) { 
    // Code here 
};