javascript - 如何在 Heroku 测功机/服务器重启和新部署之间保持一个变量?
问题描述
我有一个数组,其中包含一堆值,我想在测功机重新启动和新代码部署之间保留这些值。在下面的示例中,“arrayWithValues”是我试图保留的数组,但是每当服务器以某种方式重新启动时,它都会将其擦除为空数组。我正在使用基于 Node.js 的服务器,如下所示:
const express = require('express');
const app = express();
const http = require('http').Server(app);
const port = process.env.PORT || 5000;
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json());
http.arrayWithValues = []
app.get('/', function(request, response) {
response.send(http.arrayWithValues)
});
app.post('/', function(request, response) {
var data = JSON.stringify(request.body);
http.arrayWithValues.push(data)
response.send(http.arrayWithValues)
});
http.listen(port, () => console.log('listening on port ' + port));
解决方案
由于 Heroku 文件系统是短暂的,因此本地保存的数据无法在 Dyno 重启后继续存在。
解决方案是使用外部服务,如数据库或远程文件存储。
要保存文件,您可以检查Heroku上的文件,您可以在其中看到各种选项:
- Amazon S3 是一种非常流行的解决方案
- 对于偶尔保存的简单文件,您甚至可以考虑使用 GitHub
- DropBox 也是一个可行的选择
推荐阅读
- javascript - 如何仅使用没有库的 javascript 从具有相同类的不同 div 中获取值的总和?
- python - asyncio 会在这里帮助我吗?
- r - R am/pm 日期时间问题
- python - Flask 应用程序不能暴露在 Droplet 上
- javascript - 将月份数从JS中的数组转换为月份名称
- php - htaccess 和 php 路由
- php - PHP 中关于变量变量 $_POST 的问题
- javascript - 如何在nodejs中使用express进行身份验证后授予对文件夹的访问权限?
- azure-ad-b2c - Azure B2C 通过 AD Graph 创建用户 - 无法登录
- node.js - 与 Mongos 实例的过多打开连接