2016-11-29 12 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 –