用查询伪写JSON
我在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');
但不工作…:’(
谢谢你的帮助 !
正如Chris G已经在评论中发布的那样,你已经编写了query.pseudo".json"
而不是query.pseudo+".json"
– 你应该得到一个语法错误告诉你。
但是我发现你的代码存在一些更严重的问题。
首先,一旦获得更多并发连接,就会遇到使用writeFileSync
(或readFileSync
或任何其他-Sync
函数)的麻烦。 这些是阻塞调用,应该只在事件循环的第一个刻度上使用。 对于服务请求,您应该只使用异步版本(名称中没有Sync
)。
其次,你有一个严重的安全问题 ,任何人都可以通过使用包含斜杠或双点的假名来写入文件系统中的任何位置。
第三,您以明文forms存储用户密码,这是不可接受的,并且在许多情况下可能会导致法律问题。
您似乎正在实现自己的数据库,但您没有考虑过:
- 安全
- 性能
- 比赛条件
您可以尝试修复所有这些问题,以使您的系统安全(通过清理输入数据)和性能(通过不使用阻止function)并修复一些更小的问题,或者您可以使用工作和测试的解决方案存储您的数据。
如果您不想使用MongoDB,RethinkDB或PostgreSQL之类的独立数据库或类似的东西,并且您希望将所有数据存储在文件系统上的文件中,那么您可以使用以下内容:
- http://lokijs.org/
- http://www.tingodb.com/
- https://github.com/creationix/nstore
- https://github.com/felixge/node-dirty
- https://github.com/louischatriot/nedb
- https://www.npmjs.com/package/sqlite3
- https://www.npmjs.com/package/sqlite
- https://www.npmjs.com/package/flat-file-db
- https://www.npmjs.com/package/flat-db
和许多其他人。
我不建议为那些没有经验的人建立一个数据库管理系统,这正是你在这里所做的。