2014-04-29 77 views
-1

我試圖存儲緩存(與memory-cache庫node.js),由於某種原因回調總是在newResult變量中返回null。我做錯了什麼?在緩存中存儲一​​個node.js變量

var getMapping = function(callback){ 
    if(cache.get("mapping") == null){ 
     var parser = new xml2js.Parser(); 
     fs.readFile('flow.xml', function(err, data) { 
      parser.parseString(data, function (err, result) { 
      var jsonFile = JSON.stringify(result); 
      var newResult = result = jsonFile; 
      callback(newResult); 
      }); 
     }); 
    } else{ 
     callback(cache.get("mapping")); 
    } 
} 
+0

您將不得不將此分解一點。數據中有什麼?結果是什麼?我沒有看到你在緩存中放置什麼東西。 – Brad

+0

你爲什麼使用這個var newResult = result = jsonFile?這對我沒有意義嗎? –

+0

只有當您的xml文件爲空或進程中發生錯誤時,newResult纔會爲空。您也可以驗證文件,並檢查文件是否是正確的xml文件。 – MrMins

回答

0

要存儲在緩存中,你需要使用的方法與.putcache.put(key, value)。 請嘗試使用以下代碼:

var getMapping = function(callback){ 
    if(cache.get("mapping") == null){ 
     var parser = new xml2js.Parser(); 
     fs.readFile('flow.xml', function(err, data) { 
      parser.parseString(data, function (err, result) { 
      var jsonFile = JSON.stringify(result); 
      var newResult = result = JSON.parse(jsonFile); 
      cache.put("mapping", newResult); 
      callback(newResult); 
      }); 
     }); 
    } else{ 
     callback(cache.get("mapping")); 
    } 
}