2017-06-10 23 views
2

我正在開發一個nodejs項目並堅持這個問題。 我在一個文件中有一個空對象,並將在第二個文件中更新此對象值。修改兩個文件之間的對象

jsonFile.js

var jsonObj = { 



    first: [] 

    , 
    second: [] 


    , 
    third: [], 
}; 


exports.jsonObj=jsonObj; 

pushdata.js

var obj= require('./jsonFile.js'); 
// i'll retrieve data from file and push into the obj... 
// for the sake of simplicity im not writing data fetching code.. 

ojb.jsonObj.first.push("user1"); 

我怎樣才能在pushdata.js以這樣一種方式,它也更新/在改變對象更新此對象文件jsonFile.js

+0

之間共享數據你有什麼是JavaScript對象。 [沒有像「JSON對象」](http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/)。您的示例中沒有任何內容與JSON有關。 –

+0

感謝您的回覆。我怎樣才能從pushdata.js文件更新這個JavaScript對象? – Alturistic

+0

你有什麼將會工作。對象作爲引用傳遞。只有一個對象。 –

回答

2

處理此問題的最佳方法是執行以下操作:

  1. 變化jsonFile.js到以.json文件(你仍然可以要求它爲你)
  2. 更新它,你必須例如ojb.jsonObj.first.push( 「用戶1」);
  3. 將更改寫入文件系統。

下面是一個代碼示例:

jsonFile.json

{ 
    "first": [], 
    "second": [], 
    "third": [] 
} 

pushdata.js

 var fs = require('fs'); 
     var obj = require('./jsonFile.json'); 
     ojb.first.push("user1"); 
     fs.writeFileSync(__dirname + '/jsonFile.json', JSON.stringify(obj, null, 4), 'utf8'); 

使用writeFileSync爲了簡單,但最好做文件系統寫入使用異步功能來避免ID阻止代碼。

+1

對不起,你能澄清你的意思嗎?以上是不是你所期望的? – carlcheel

+0

我曾期待這一點。現在對我來說很清楚。謝謝你解決了我的問題:) – Alturistic

1
你不能」更新jsonFile.js文件這種方式,因爲需要創建實例 每次打電話時需要() 如果你要更新的文件,你需要創建JSON數據文件

, 讀取JSON文件使用fs模塊並將其轉換爲javascript對象並更新javascript對象,然後使用JSON.stringfy轉換字符串,然後使用fs模塊編寫文件。

OR 您可以在創建的NodeJS服務模塊