自己封装 uuid 踩的一个小坑

自己封装 uuid 踩的一个小坑

💡 原文中文,约1500字,阅读约需4分钟。
📝

内容提要

在项目中,作者封装了生成全局唯一UUID的函数,但因环境差异导致UUID格式不一致,最终在正式环境中出现错误,影响了后续业务逻辑处理。

🎯

关键要点

  • 封装的功能应保持输出结果格式一致。
  • 项目中需要生成全局唯一的UUID来标记数据。
  • 最初使用时间戳+自增数生成唯一ID,但后改用crypto.randomUUID()方法。
  • 封装的UUID生成函数在不同环境下生成的格式不一致。
  • 本地开发和测试环境使用HTTP协议,生成的UUID格式一致,未发现问题。
  • 正式环境使用HTTPS协议,导致UUID格式不同,影响业务逻辑。
  • 业务逻辑中使用[name]-[uuid]拼接成key,分割时出现错误。
  • 分割代码在正式环境中因UUID格式不同导致取到的UUID不完整。

延伸问答

为什么在正式环境中生成的UUID格式与测试环境不同?

正式环境使用HTTPS协议,导致UUID生成时采用了不同的方法,从而格式不一致。

如何生成全局唯一的UUID?

可以使用crypto.randomUUID()方法,或者结合时间戳和自增数生成唯一ID。

封装UUID函数时需要注意什么?

需要确保不同环境下输出结果格式一致,以避免后续业务逻辑处理出错。

在业务逻辑中如何使用UUID?

可以将UUID与其他标识拼接成key,例如使用[name]-[uuid]的格式。

为什么使用UUID时会出现分割错误?

因为在正式环境中生成的UUID包含中横线,而测试环境生成的UUID没有,导致分割时取到的UUID不完整。

如何确保UUID生成的一致性?

应统一使用一种生成UUID的方法,并确保在所有环境中都能生成相同格式的UUID。

➡️

继续阅读