Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在mongo中,是否可能有一个看起来有效但永远不可能存在的_id?_Node.js_Mongodb - Fatal编程技术网

Node.js 在mongo中,是否可能有一个看起来有效但永远不可能存在的_id?

Node.js 在mongo中,是否可能有一个看起来有效但永远不可能存在的_id?,node.js,mongodb,Node.js,Mongodb,我正在为一个web应用程序进行单元测试,我想做一个测试用例,看看当有人试图获取一个永远不可能存在的mongo文档时,我的应用程序是否会发回相应的错误消息 为了提供更多的上下文,web应用程序根据mongo数据库中某些项目的_id发回有关该项目的信息。用户可以获得任何项目的_id,因为所有项目都可以公开查看 我想知道的是,是否可能有一个_id可以在数据库中查询,但它永远不可能存在 如果这是可能的,那么我可以制作一个测试用例,查询mongo db,并在每次保证的情况下发回相应的错误消息。现在,我正在

我正在为一个web应用程序进行单元测试,我想做一个测试用例,看看当有人试图获取一个永远不可能存在的mongo文档时,我的应用程序是否会发回相应的错误消息

为了提供更多的上下文,web应用程序根据mongo数据库中某些项目的_id发回有关该项目的信息。用户可以获得任何项目的_id,因为所有项目都可以公开查看

我想知道的是,是否可能有一个_id可以在数据库中查询,但它永远不可能存在

如果这是可能的,那么我可以制作一个测试用例,查询mongo db,并在每次保证的情况下发回相应的错误消息。现在,我正在使用分配给一个不再存在的项目的mongo_id

我对该id的要求是:

  • 1) 它需要与正常id的长度相同
  • 2) 这是必须的 由与_id相同的字符组成(我假设为十六进制)
  • 3) mongo分配给一个 文件
同样值得注意的是,用户在创建项目时永远无法分配_id。mongo正在处理所有id分配

如果它符合以上所有条件,我会很高兴

他们唯一能想到的就是000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

但是,出于某种原因,mongo永远无法分配该id

您需要区分“mongodb永远不会生成此id”和“如果我们提供此id,mongodb永远不会接受”

对于前者,您的示例中的所有零对象id都很好。Mongodb永远不会生成这样的id(因为时间戳生成规则,如果没有其他规则的话)

如果是后者,那是不可能的。mongo对象id基本上是一个12字节的二进制blob,没有无效值或限制值。所有值都有效


还请注意,
\u id
字段可以接受大多数任何值:字符串、数字、对象id、对象,以及您拥有的内容。除了阵列。

你好,塞吉奥,谢谢你的回答。我现在已经更新了问题。在这种情况下,我更关心后者。了解mongo如何分配_id确实有助于为我的测试用例提供一个_id。我真正想要的是一个我可以在我的乳头案例中使用的_id,它总是会返回我的错误消息“一个有这个_id的项目没有。”。如果_id是由时间戳确定的,那么全零的_id应该包括这一点。@DavidOGrady“但它永远不可能存在?”-再次强调,不要混淆这两种情况。此id肯定存在(如果显式插入)。只是mongodb不会自己生成它。只是要确保您理解区别。在web应用程序中,用户在尝试创建项目时无法分配_id,因此我们不必担心_id被显式插入。谢谢你的跟进。