我在node.js中有一个小网站,当一个人想要注册时,我们在这里调用一个函数(一个外部文件)我编写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')
}
但是我不能写“query.pseudo.json”我怎么写这个? 我已经尝试过了:
fs.writeFileSync(query.pseudo".json", new_file, 'utf-8');
但没有工作......:'(
感谢您的帮助!
答案 0 :(得分:1)
正如Chris G已经在评论中发布的那样,您已经写了query.pseudo".json"
而不是query.pseudo+".json"
- 您应该在语法错误时告诉您。
但我发现你的代码存在一些更严重的问题。
首先,只要获得更多并发连接,就会遇到使用writeFileSync
(或readFileSync
或任何其他-Sync
函数)的问题。这些是阻塞调用,应该只在事件循环的第一个刻度上使用。对于服务请求,您应该只使用异步版本(名称中没有Sync
)。
其次,您有一个严重的安全问题,任何人都可以使用包含斜杠或双点的假名来写入文件系统中的任何位置。
第三,您正在以纯文本存储用户密码,这是不可接受的,并且在许多情况下可能会导致法律问题。
您似乎正在实施自己的数据库,但您没有考虑过:
您可以尝试修复所有这些问题,以使您的系统安全(通过清理输入数据)和性能(通过不使用阻止功能)并修复一些更小的问题,或者您可以使用工作和经过测试的解决方案来存储您的数据。
如果您不想使用MongoDB,RethinkDB或PostgreSQL之类的独立数据库或类似的东西,并且您希望将所有数据存储在文件系统上的文件中,那么您可以使用以下内容:
和其他许多人。
我不建议建立一个数据库管理系统,这正是你在这里所做的,对那些没有经验的人来说。