2016-11-29 16 views
0

我有node.js的一個小網站,當一個人想報名參加我們調用一個函數(一個外部文件)這裏的部分在那裏我寫的JSON:寫JSON與查詢僞

{ 
    nouveauMembre = {}; 
    nouveauMembre.pseudo = query.pseudo; 
    nouveauMembre.password = query.password; 
    listeMembre[listeMembre.length] = nouveauMembre; 

    contenu_fichier = JSON.stringify(listeMembre); 

    fs.writeFileSync("membres.json", contenu_fichier, 'utf-8'); 
} 

我們寫的JSON menbres.json僞和密碼,但我想要寫另一個文件至極被調用選擇的實際僞(查詢)

,所以我寫:

nouveauMembre = {}; 
nouveauMembre.pseudo = query.pseudo; 
nouveauMembre.password = query.password; 
listeMembre[listeMembre.length] = nouveauMembre; 

contenu_fichier = JSON.stringify(listeMembre); 

fs.writeFileSync("membres.json", contenu_fichier, 'utf-8'); 

AddMembre = {}; 
AddMembre.pseudo = query.pseudo; 
AddMembre.email = query.email; 
AddMembre.nom = query.nom; 
AddMembre.prenom = query.prenom; 
AddMembre.password = query.password; 

new_file = JSON.stringify(AddMembre); 

fs.writeFileSync("query.pseudo.json", new_file, 'utf-8') 

} 

但我不能wirte「query.pseudo.json」如何我可以寫這個嗎? 我已經與嘗試:

fs.writeFileSync(query.pseudo".json", new_file, 'utf-8'); 

,但沒有工作...!「(

感謝您的幫助

+0

'query.pseudo +「.json」' –

+0

Did [my answer](http://stackoverflow.com/questions/40863991/write-json-with-query-pseudo/40864731#40864731)對你有幫助嗎?任何意見? – rsp

回答

1

正如克里斯G有已經張貼在評論,你寫query.pseudo".json"而不是query.pseudo+".json" - 你應該得到一個語法錯誤,告訴您

但我看到你的代碼中的一些比較嚴重的問題

首先,當您獲得更多併發連接時,您將使用writeFileSync(或readFileSync或任何其他-Sync函數)陷入困境。這些阻止呼叫,應該只用於事件循環的第一個滴答。對於服務請求,您應該只使用異步版本(名稱中不包含Sync)。

其次,你有一個嚴重的安全問題任何人都可以通過使用包含斜槓或雙點的假名來寫入文件系統中的任何位置。

三,您以存儲用戶密碼,這是不可接受的,在許多情況下可能會導致您的法律糾紛。

你似乎是實現自己的數據庫,但你有沒有考慮過:

  1. 安全
  2. 性能
  3. 競爭條件

你可以試着解決所有這些問題,使您的系統安全(通過消毒輸入數據)和性能(不使用阻塞功能)並修復一些小問題,或者使用經過測試的解決方案來存儲數據。

如果你不想使用像MongoDB,RethinkDB或PostgreSQL這樣的獨立數據庫或類似的東西,並且你希望所有數據存儲在文件系統的文件中,那麼你可以使用類似這樣的東西:

等等。

我不建議建立一個數據庫管理系統,這正是你在這裏做的,對於沒有經驗的人來說。

+0

謝謝親愛的rsp –