【问题标题】:Convert UUIDv4 to ObjectID - MongoDB将 UUIDv4 转换为 ObjectID - MongoDB
【发布时间】:2022-01-29 20:25:32
【问题描述】:

目前我正在生成唯一的 UUID 并将它们保存为 MongoDB 中的字符串。 有没有办法将这些 UUID 存储为 MongoDB 中的 ObjectID。

问题是基于 _id 的 User.findOne 不起作用,因为 UUID 是字符串而不是 ObjectID

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    你不必为你生成实体的 uuid,例如,如果你使用 create() 方法而不传递 _id,它会生成它。

    手动生成肯定更好。

    默认情况下。

    【讨论】:

    • 是的,我知道 mongoose 会自动生成 _id,但我想要一个看起来像 c4ea5454-af54-4d9a-afa7-705b46dfe8ed 的 UUID。该函数生成这种 id,但将其保存为字符串。我想将该字符串转换为 objectID
    • 是的,将架构类型更改为 objectId,并在保存时使用 Type.ObjectId(YOUR_UUID4) 但我认为这会崩溃,因为不是正确的格式,但是您可以尝试将其保存为字符串并查询不使用 findById 而是使用 findOne
    • 不幸的是,这不起作用。我仍然收到字符串和 objectid 之间的转换错误。
    【解决方案2】:

    所以基本上将它们存储为_id: UUID("5fe6075a-8157-4dfc-8aab-3316ea9cbf17") 格式而不是字符串。然后它应该与 findOne() 一起按预期工作。你也可以参考这个answer

    【讨论】:

      猜你喜欢
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 2011-12-11
      • 2018-11-09
      • 1970-01-01
      • 2017-03-11
      • 2014-04-20
      相关资源
      最近更新 更多