【问题标题】:"Database" files are overriden in Heroku“数据库”文件在 Heroku 中被覆盖
【发布时间】:2019-06-07 09:12:17
【问题描述】:

我试图避免在我的简单 RESTful 应用程序中使用数据库。 我创建了一个“posts.txt”文件,其中包含所有帖子,应用程序从该文件中读取并创建帖子数组(JSON.parse)。 问题是,当我“git push heroku master”时,heroku 中的“posts.txt”被覆盖,因此我丢失了客人创建的所有帖子。 我试图 .gitignor 这个文件,但似乎我只是做了它(或者我不理解“取消跟踪”文件的想法)。 我该怎么做才能防止覆盖(我只是不想每次都将新的“posts.txt”推送到heroku中)?

【问题讨论】:

  • 你为什么要避免使用数据库?
  • 这个站点将很少被访问,如果我只能将帖子信息写入文本文件然后从中读取(当服务器重新启动时),使用数据库似乎是一种浪费。
  • 有道理,但仅仅因为一个站点很少被访问并不会减少对高质量站点的需求,对吗?我的意思是,如果您希望它按照您描述的方式工作并发挥作用,您需要一个 DB 层。并不意味着数据库层必须过于复杂。只需要完成工作。

标签: node.js git heroku


【解决方案1】:

由于随着时间的推移,您的 Heroku 应用程序可能会在多个服务器上运行,因此无法确保您的 posts.txt 文件在超时时间内保持一致。此外,当您进行更改时,正如您所指出的,它很容易被覆盖。

Heroku 可以根据需要终止您的应用程序并在另一台服务器上启动它。几乎就像无服务器类型设置。

这意味着如果没有某种类型的数据库层,就无法确保 Heroku 上稳定的数据持久性。


我忘记提及的 cmets 中提到的好点。该文件也将在循环后被删除,因为文件系统是短暂的。您可以在 Heroku 的网站 here 上找到有关丢失/删除的文件上传的更多信息。


关于此的另一件事是,即使您使用某种类型的 VPS 或类似的东西,您仍然会遇到如何在开发过程中将帖子同步到本地计算机并确保保持同步的问题。数据库层肯定是要走的路。

【讨论】:

  • 不仅会不一致,而且文件循环后也会被删除,因为文件系统是临时的。更多关于 here.
  • 是的,我刚刚在 5 分钟前读到它......我确信 posts.txt 文件被我将 git 推入 heroku 的事实所覆盖,但现在我明白我是错误(我什至在控制台中写了“heroku restart”,并看到posts.txt“恢复”到它的初始值)。谢谢你们的帮助。
猜你喜欢
  • 2020-08-06
  • 1970-01-01
  • 2012-11-22
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 2014-10-27
  • 2023-03-26
  • 2014-04-10
相关资源
最近更新 更多