0

我试图用 Mongodb 和 Node.js 实现一个简单的登录系统,但我发现它太麻烦了(每个人都在一百个框架上构建东西,而不是解释一半的代码)。我可能可以做到,但它需要太多的工作等等,因为我只想制作一个简单的多人游戏。

我的数据库替代品是纯文本文件。当然,我确实计划对密码进行哈希处理。我想到的第一个问题是文件可能会变得太大,并且服务器在尝试读取它时会完全放慢速度(在假设的情况下,我怀疑我的游戏会有那么多用户)。解决方案是在服务器上创建一个users/文件夹,并将大文件拆分为许多较小的文件。他们的名字将与用户名相对应,并且将保存散列密码和电子邮件。这解决了速度问题,我看不出我还需要数据库!

我错过了什么吗?使用数据库还有其他好处吗?此外,如果有人回答登录 Mongodb 示例,我会非常高兴,这将解决我所有的问题。让它尽可能简单。

4

4 回答 4

4

有很多理由使用真正的数据库而不是一些被破解的、半生不熟的文件实现。一些大的:

  • (这真的是4个原因)
  • 性能和稳定性(数据库是一些仍在使用的最成熟的软件)
  • 标准化

如果您想要“轻量级”,我建议您从SQLite开始。


有关的:

于 2012-06-13T17:27:15.653 回答
2

假设您有一个身份验证信息:用户名(10),密码(32)。这些是 42 个字符。假设每个字符为 4 个字节(包含宇宙中的所有字符),每个用户消耗 42 * 4 = 168 个字节。即使您有 100.000 个用户,它也只需要 16 MB 的内存。它可以容纳整个 RAM,您只需将更改写入磁盘,并在程序启动时将它们全部读取。当然,它会有一点开销,但不是什么大问题。

但是,处理文件可能会成为一个问题,您不必重新发明轮子。这就是数据库的用途。我同意,使用 Mongo,MySQL 有时可能有点过头了,但是如果您只打算使用数据库进行身份验证,您可以使用更轻量级的解决方案,您可以使用 SQLite,它只有一个文件、一个 ~270KB 的客户端和一个不错的NodeJS 库。看看这个不错的帖子

于 2012-06-13T17:29:04.437 回答
1

如果您使用的是 NodeJS mongoDB 可以很好地满足您的需求,还可以选择 redis、couch 等... MongoDB 是一个很好的起点,如果您一直在玩它,不妨试试坚持下去。

看看这个使用 cloudfoundry 或 Mongolab(都是免费的)mongoDb 服务器的 repo。

https://github.com/daithiw44/Node_Authenticated_MongoDB

该演示有一个按钮,当点击时点击数据库来获取一个值。用硬编码值替换用户名和密码文本字段中的值,就可以验证用户身份并设置 expressjs 会话。

这是用旧版本的 node 编写的,但是对 package.json 的调整应该会给你一个很好的起点。

希望有帮助。

于 2012-06-13T20:13:06.640 回答
1

如果您正在使用 mongo,我强烈建议您使用Mongoose库。它为 Mongo 提供了出色的 ORM。如果您最终决定使用该 ORM,则有一个已建立的身份验证库,称为mongoose-auth。我为自己的站点使用了默认密码示例。

于 2012-06-13T17:26:49.693 回答