javascript - Nodejs 持久变量

标签 javascript node.js meteor

在 Nodejs 中是否有某种类 Session 的变量来保存数组? 我的意思是我可以在其他范围内定义名称并在不同范围内访问的东西(即:变量(“Array1”)在函数 A 中定义但在函数 B 中访问并持续存在直到它被销毁)。

原因是我使用 Meteor 将大文件切成小块并将其传回服务器。我尝试使用 fs.WriteFilefs.AppendFile 的组合,但不知何故文件在途中被肢解了(该文件是视频,复制时发生播放错误文件)。

我在某处读到,构造函数可以重建 blob。但是,我需要将其传递给全局变量或类似 session 的变量才能这样做。

那么...我如何在 Nodejs 中使用这样的东西?

最佳答案

有这样的东西——它叫做数据库:-)


当您在 Meteor 中时,所有文件都加载到单个运行环境中。因此,与普通 Node 不同,在一个文件中创建的全局变量可以在任何其他文件中访问。所以你可以写

Slices = {};

在一个文件中,然后在另一个文件中

Slices['Array1'] = ...

注意在定义 Slices 对象时没有 var 关键字,否则它不会是全局的,而是限定在文件范围内。


上面的方法显然有一个问题,那就是服务器重载时的持久化。当服务器崩溃并重新启动时,或者当您上传新版本时,所有这些变量都会重新创建并且您会丢失数据。

为防止这种情况发生,您需要将变量存储在永久保留它们的地方——某种数据库。有几种为此类运行时变量量身定制的解决方案(例如 Redis),但由于您使用的是 Meteor,自然的解决方案是使用提供的 Mongo 数据库。所以只需在服务器端创建一个新的集合

Slices = new Meteor.Collection('slices');

并使用常用的findinsertupdateremove 方法来访问您的变量。

关于javascript - Nodejs 持久变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25416871/

相关文章:

javascript - 如何用 <br/> 元素替换字符串中的所有换行符?

javascript - 将 hoist-non-react-statics 与 withRouter 一起使用

javascript - 查看特定页面时将额外的 css 类应用于标题

javascript - 观察对象变化的最低级别方法

javascript - event.target 弄乱了按钮区域

Javascript - 检查字段是否包含数字工作不正确

javascript - Babel/Webpack : Cannot find "yaml-loader" (works in development, 未生产)

javascript - 可以在原始文件中更改导出的变量吗?

mongodb - 导出集合并用另一个集合中的字段替换字段(聚合?)

arrays - MongoDB - 仅投影数组中的匹配元素