javascript - 我应该如何管理 Node 中的内存数据?

标签 javascript database node.js database-design ecmascript-6

我有一个在服务器端使用 Node、Express 和 Socket.io 构建的简单应用程序。当我的页面需要检索不会更改的数据时,它会查询我的 API,并使用 WebSockets 从服务器获取动态数据的实时更新。该应用程序允许一个人,即“主管”,向任意数量的“用户”(未经身份验证)发送问题,并在他们慢慢进入时查看他们的答案。用户使用 POST 请求将数据发送到服务器,这是通过 WebSocket 流式传输到 Supervisor。服务器将用户数据存储在一个简单的数组中,并使用数组中的项目(用户)到包含每个问题和答案的对象的 ES6 映射,如下所示:

class User {}
let users = [], qa = new Map();
io.on('connection', socket => {
  let user = new User(socket.id);
  users.push(user);
  qa.set(user, {});
  socket.on('question-answered', ({id, answer}) => {
    let questionData = qa.get(user);
    questionData[id] = answer;
    qa.set(user, questionData);
  });
});

这显然是一种非常原始的数据处理方式,但我认为不需要额外的复杂性。数据不需要在服务器崩溃或重新启动时持续存在(用户的问题和答案也存储在 localStorage 中),MongoDB 甚至 Redis 对于此类数据来说似乎有点大材小用。

所以我的问题是,我的处理方式正确吗?我还有什么遗漏的地方吗?我只想要一种简单的方法来将数据存储在内存中,并能够通过客户端 GET 请求和 socket.io 访问它。感谢您的帮助。

最佳答案

如果数组和映射为您提供了所需的数据访问类型,并且不需要崩溃持久性,并且您有适当的内存量来保存数据量,那么您就完成了。

除非您的需求(查询、持久性、性能、多用户、崩溃恢复、备份等)需要更复杂的东西,否则不需要更多。一个简单的陈词滥调适用于此:如果它没有损坏,就不需要修复。

关于javascript - 我应该如何管理 Node 中的内存数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28892648/

相关文章:

node.js - 通过连接几个表获取不同的数据 Sequelize ORM

javascript - 发送后 Node 保存错误 "Can' t 设置 header ”

javascript - 通过 jquery/ajax 使用谷歌地图地理编码从纬度/经度获取城市/州?

SQL 为 count() 返回 0,但使用简单的 SELECT 返回多行

javascript - 如何一次将常用的 CSS 样式应用到多个 Shadow Roots?

mysql - 如何从mysql连接kognitio数据库

database - 如果我为每个用户随机生成 SALT,我该如何对他们进行身份验证?

node.js - MongoDB连接不断增加

php - 使用 jQuery 和 html 下拉列表加载页面

javascript - 循环(将项目存储在集合中)似乎迭代次数少于应有的次数?