首页 > 解决方案 > 如何在 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));

标签: javascriptnode.jsexpressherokudyno

解决方案


由于 Heroku 文件系统是短暂的,因此本地保存的数据无法在 Dyno 重启后继续存在。
解决方案是使用外部服务,如数据库或远程文件存储。

要保存文件,您可以检查Heroku上的文件,您可以在其中看到各种选项:

  • Amazon S3 是一种非常流行的解决方案
  • 对于偶尔保存的简单文件,您甚至可以考虑使用 GitHub
  • DropBox 也是一个可行的选择

推荐阅读