node.js - 多个文件同时操作?节点.js
问题描述
我正在制作一个 node.js Web 应用程序。我希望用户能够通过表单提交某些内容,并且我将数据存储到文本文件中。如果多个人同时提交一些东西怎么办?一个人会阻止另一个人运行服务器端代码吗?或者同时打开文件是否有问题?
解决方案
nodeJS 包含的fs
模块包括异步和同步操作。使用同步操作会导致您担心,当有人在处理文件时服务器会冻结。这就是您应该使用异步选项的原因。
因为 NodeJS 在单个进程中运行,所以在有大量活动时使用复杂的同步操作是危险的。当文件系统在后台完成它的工作时,异步操作将释放进程,允许其他请求处理直到完成。
例如,如果您尝试将文件写入文件系统:
同步的
fs.writeFileSync('groceries.txt', 'eggs, milk, bread');
// Stuck waiting until file is written
console.log('List Saved!');
console.log('continuing running');
控制台将输出:
List Saved!
continuing running
异步
fs.writeFile('groceries.txt', 'eggs, milk, bread', (err) => {
if (err) throw err;
console.log('List saved!');
});
// Can continue running other things in the meantime
console.log('continuing running')
控制台将输出:
continuing running
List Saved!
现在,如果正在对同一个文件进行写入,您肯定希望使用fs.createWriteStream
允许您重复写入文件的方法。这通常由像记录器这样的东西使用,它需要非常快速地输出到文件中,并且如果同时写入两件东西不会引起冲突。
尽管数据库似乎是并发写入的理想选择。
推荐阅读
- node.js - Heroku Postgres Typeorm 迁移
- smartcard - 解码 BER TLV
- sql - 为部门和员工编写 Postgres SQL 查询
- ruby - 如何实现link_to,AJAX,remote:true,respond_to而不渲染新的url Rails 6
- r - H2O R 包的安全问题
- javascript - 我怎样才能让桨把球击起来并回到空中?
- python - 在 Python 3.9 中导入 numpy 库时出错
- java - Java HashSet does not work as expected with Arrays.asList
- filepath - Prettier - 如何忽略 CLI 文件模式中的某些文件类型?
- node.js - 如何将类验证器实现为中间件?