2016-07-02 17 views
1

Ich bin ein Neuling in NodeJs.NodeJS-Cache-Problem mit module.exports

Ich habe dieses Drehbuch: book.js

var page = 0; 

exports.setPageCount = function (count) { 
    page = count; 
} 

exports.getPageCount = function(){ 
    return page; 
} 

Zusammen mit dem follownig Skript: scripts.js

var bookA = require('./book'); 

var bookB = require('./book'); 

bookA.setPageCount(10); 

bookB.setPageCount(20); 

console.log("Book A Pages : " + bookA.getPageCount()); 

console.log("Book B Pages : " + bookB.getPageCount()); 

Der Ausgang I erhalten:

Book A Pages : 20 
Book B Pages : 20 

Also, ich modifizierte Skript:

module.exports = function(){ 
    var page = 0; 

    setPageCount : function(count){ 
     page = count; 
    }, 

    getPageCount : function(){ 

     return page; 
    } 

} 

Ich erwarte die folgende Ausgabe:

Book A Pages : 10 
Book B Pages : 20 

Aber immer noch das ursprüngliche Ergebnis bekommen, hat jemand eine Idee, wo ich einen Fehler gemacht?

Antwort

2

Es gibt ein paar Möglichkeiten, um über diesen und Ihren letzten Versuch zu gehen, sind fast ein gültiger - ändern Sie Ihr Modul wie folgt:

module.exports = function() { 
    var pages = 0; 
    return { 
    getPageCount: function() { 
     return pages; 
    }, 
    setPageCount: function(p) { 
     pages = p; 
    } 
    } 
} 

und Ihre Nutzung wie so:

var bookFactory = require('./book'); 
var bookA = bookFactory(); 
var bookB = bookFactory(); 
bookA.setPageCount(10); 
bookB.setPageCount(20); 
console.log("Book A Pages : " + bookA.getPageCount()); 
console.log("Book B Pages : " + bookB.getPageCount()); 
+0

var bookA = bookFactory(); ^ TypeError: bookFactory ist keine Funktion –

+0

Sie können auch eine 'class' oder' prototype' aus Ihrem Modul zurückgeben und das Schlüsselwort 'new' verwenden. Viele Möglichkeiten, um das zu erreichen, wonach Sie suchen. – daf

+0

Ich habe meinen Beitrag bearbeitet, um auch Änderungen an Ihrem Modul zu berücksichtigen - Ihren zweiten Versuch zu schnell und bei der Rückschau zu lesen, erkannte, dass es sich auch ändern musste. Entschuldigung. – daf

Verwandte Themen