在 Nodejs 中是否有某种类 Session 的变量来保存数组? 我的意思是我可以在其他范围内定义名称并在不同范围内访问的东西(即:变量(“Array1”)在函数 A 中定义但在函数 B 中访问并持续存在直到它被销毁)。
原因是我使用 Meteor 将大文件切成小块并将其传回服务器。我尝试使用 fs.WriteFile
和 fs.AppendFile
的组合,但不知何故文件在途中被肢解了(该文件是视频,复制时发生播放错误文件)。
我在某处读到,构造函数可以重建 blob。但是,我需要将其传递给全局变量或类似 session 的变量才能这样做。
那么...我如何在 Nodejs 中使用这样的东西?
最佳答案
有这样的东西——它叫做数据库:-)
当您在 Meteor 中时,所有文件都加载到单个运行环境中。因此,与普通 Node 不同,在一个文件中创建的全局变量可以在任何其他文件中访问。所以你可以写
Slices = {};
在一个文件中,然后在另一个文件中
Slices['Array1'] = ...
注意在定义 Slices
对象时没有 var
关键字,否则它不会是全局的,而是限定在文件范围内。
上面的方法显然有一个问题,那就是服务器重载时的持久化。当服务器崩溃并重新启动时,或者当您上传新版本时,所有这些变量都会重新创建并且您会丢失数据。
为防止这种情况发生,您需要将变量存储在永久保留它们的地方——某种数据库。有几种为此类运行时变量量身定制的解决方案(例如 Redis),但由于您使用的是 Meteor,自然的解决方案是使用提供的 Mongo 数据库。所以只需在服务器端创建一个新的集合
Slices = new Meteor.Collection('slices');
并使用常用的find
、insert
、update
和remove
方法来访问您的变量。
关于javascript - Nodejs 持久变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25416871/