小编gtb*_*ono的帖子

我什么时候应该在 MongoDB 中使用 ObjectId 与 UUID

我正在使用 MongoDB 制作一个简单的 CRUD 应用程序,以便我可以了解更多信息。

该应用程序是一个简单的博客,我有一个名为“文章”的集合,其中存储了各种文档,每个文档都代表我博客的一篇文章。

当我显示所有博客文章的列表时,我可以执行 db.collection.find() 并列出所有文章。

但问题在于当我需要单独显示单个帖子时,当我需要查询单个特定文档的集合时。

合乎逻辑的解决方案是使用 RDBMS 和自动增量功能,但 MongoDB 是 NoSQL 并且没有自动增量功能。

我正在使用文档的自动生成的 _id 字段,默认情况下它存储 ObjectId,这意味着我的 url 看起来像这样:

http://localhost/blog/article.php?_id=5d41f6e5fc1a2f3d80645185
Run Code Online (Sandbox Code Playgroud)

我在文档中看到 ObjectId 包含服务器的唯一标识符,以及时间戳和计数器,是否将这些东西暴露为安全风险?

作为解决方案,我偶然发现了 UUID https://docs.mongodb.com/manual/reference/method/UUID/,它是一个自动生成的唯一 ID,它不会在其中公开时间戳和机器信息。使用它而不是包含我的 ObjectId 的 _id 来查询和查找文档似乎是一个合乎逻辑的解决方案。

所以我可以让我的网址看起来像这样:

http://localhost/blog/article.php?_id=23829651-26f7-4092-99d0-5be8658c966e
Run Code Online (Sandbox Code Playgroud)

但是,我应该保留 _id 属性吗?我应该添加另一个名为“id”的存储 UUID 的吗?我什至应该使用 UUID 吗?

database mongodb

6
推荐指数
1
解决办法
1426
查看次数

单一责任原则的范围是什么?

今天我工作的另一位工程师问我“这是什么责任?” 我的回答如下:

“您的代码的每个范围,无论是if语句,函数,类还是模块,都应该有一个更改的理由”。

但是,在我读到的所有这篇文章中,人们都是在课堂上谈论的。我告诉他SRP适用于他的代码中的每个范围,我错了吗?

oop single-responsibility-principle solid-principles

5
推荐指数
1
解决办法
122
查看次数