首页 > 解决方案 > 多个文件同时操作?节点.js

问题描述

我正在制作一个 node.js Web 应用程序。我希望用户能够通过表单提交某些内容,并且我将数据存储到文本文件中。如果多个人同时提交一些东西怎么办?一个人会阻止另一个人运行服务器端代码吗?或者同时打开文件是否有问题?

标签: node.jsfileexpresssave

解决方案


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允许您重复写入文件的方法。这通常由像记录器这样的东西使用,它需要非常快速地输出到文件中,并且如果同时写入两件东西不会引起冲突。

尽管数据库似乎是并发写入的理想选择。


推荐阅读