【问题标题】:Will new Date().toJSON() always be unique in Javascript?new Date().toJSON() 在 Javascript 中总是唯一的吗?
【发布时间】:2018-07-03 02:18:19
【问题描述】:

PouchDB Manual 建议使用Date().toJSON() 为每个文档生成一个新的 id。是否所有 javascript 运行时都保证 Date().toJSON() 始终是唯一的?

【问题讨论】:

  • 不,它不会是唯一的——如果你和我在完全相同的时刻运行它,我们将得到完全相同的结果。而且,console.log(new Date().toJSON(),new Date().toJSON()) 在大多数情况下也会产生两次相同的输出 - 所以,不会
  • new Date().toJSON() + Math.random() + Math.random() 更有可能是唯一的
  • 为什么不使用固定长度的加盐哈希值来生成随机 id + 增量器

标签: javascript node.js v8 pouchdb


【解决方案1】:

日期只有微秒精度,因此不能保证它们是唯一的。

下面的 sn-p 将在除最慢的运行时环境之外的所有环境中为您提供许多重复项:

for (let i = 0; i < 10; i++) {
  console.log(new Date().toJSON())
}

【讨论】:

    【解决方案2】:

    我认为 PouchDb 指南在该示例中提到使用日期,以便文档按日期/时间顺序排列,而不是确保唯一性。在the API 中,您可以看到如果您不指定 ID,PouchDb 将为您创建一个唯一的。

    【讨论】:

    【解决方案3】:

    在分布式系统的情况下,我们也可以使用这个eventid模块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      • 2013-08-01
      • 2014-12-18
      • 2020-08-23
      • 1970-01-01
      • 2020-09-24
      相关资源
      最近更新 更多