在哪里保存数据在express.js应用程序以外的数据库?



我在一个页面上显示了一个链接,我想通过使用一个表单来改变这个链接。

我应该在哪里保存该链接并检索以呈现数据库以外的页面?

*我认为在这么小的任务中使用数据库并不会提高性能。


我能做的就是把它保存在一个全局变量中作为一个字符串,这样我就可以访问它并改变它。

但是在生产中使用全局变量来完成这样的任务是一个好的做法吗?

好的,现在我们知道这是一个影响所有用户的更改,那么一个全局变量或最好是模块级变量或模块共享对象的属性就可以了。

如果您希望此更改持久且在服务器重新启动后仍然有效,那么您需要将更改写入磁盘,并在服务器重新启动时从磁盘读取该设置的代码。一种简单的方法可能是将其以JSON格式读取/写入文件。这为您提供了简单的可扩展性,还可以在该文件中包含其他设置。

你的管理表单可以更新这个变量,并触发保存到磁盘的所有当前设置。

我相信你想要实现哪种方法真的取决于场景,例如链接被更改的频率,它被读取的频率等。几个建议:

  1. 如果不同的用户希望在不影响其他人的情况下查看和更新相同的链接,您可以使用在客户端存储的cookie。这样你就不需要数据库了,但是每个用户将管理他们自己的链接,其他人无法访问。
  2. 你可以使用一个文件,例如json或简单的文本文件,并使用内置的fs来读取和写入该文件。但是,在这种情况下,您可能希望使用同步操作来避免并发问题,例如const contents = fs.readFileSync('storage.txt', 'utf8');
  3. 当然你也可以将数据存储在字符串中,但是如果服务器宕机,链接将无法保存。

最新更新