带有 semver 的 PouchDB allDocs 范围

PouchDB allDocs range with semver

有什么方法可以让 allDocs 查询尊重顺序和范围的语义版本(semver,例如 1.0.2):

例如:

    const res = await db.allDocs({
      startkey: `/myThing/1.0.0`,
      endkey: `/myThing/1.5.2`,
    });

谢谢!

一句话:没有

更长的答案:如果您可以自由地使用您的版本字符串进行创意,您可以近似类似的东西。索引对排序进行基于字符串的比较,因此您需要将您的值转换为与 semver 相同的字母数字排序的东西。通过为每个版本组件使用固定大小,这对于 semver(给定一定的范围限制)来说相对容易。也就是说,如果每个版本组件总是使用两位或三位数字,那么排序就可以了。

即:

  • 1.0.0 变为 001.000.000
  • 1.5.2 变为 001.005.002
  • 10.9.100 变为 010.009.100

当然,这仅适用于 0 到 999 范围内的值。如果您的版本组件为 1000 或更高版本,则需要移动到 4 位数的解决方案等。这也不行t 处理某些 semver 方案中使用的可选部分,例如 1.0.0-rc1 中的 -rc1。但通常情况下,这些部分无论如何都会按字母数字排序,因此在大多数情况下,这不需要任何额外的考虑。