ArangoDB 提前请求唯一键

ArangoDB Request Unique Key in Advance

我正在开发一个实时网络应用程序。后端是NodeJS和ArangoDB。我想在创建文档之前生成一个唯一的 _key 并将其发送到网络应用程序。这样就可以在运行中快速创建文档,而无需使用新生成的 ID 等待服务器的响应。澄清一下:

  1. 用户登录并且 Web 应用程序从 ArangoDB 接收唯一密钥(通过 NodeJS)
  2. 用户创建了一个新文档,Web App 为其分配了在步骤 1 中提供的唯一键
  3. Web 应用程序立即请求一个新的唯一密钥以供使用,因为之前的密钥正在使用中
  4. 用户使用步骤 1 中的唯一键将新创建的文档保存到数据库中的多个集合之一
  5. Web 应用更新其本地文档缓存,无需等待从数据库自动生成的密钥
  6. 从第 2 步重新开始

这只是预期工作流程的粗略概述。我相信 CouchDB 具有为用户提供唯一 ID 的功能: http://docs.couchdb.org/en/1.6.1/api/server/common.html?highlight=id#get--_uuids

我确实在 ArangoDB 文档中找到了这段代码:

FOR i IN 1..10
  INSERT { value: i } IN test
  RETURN { _key: NEW._key, value: i }

它在集合中创建了一批唯一键。但是,我不确定此处生成的键是否对所有集合都是唯一的,或者更可能的是,只是为它们生成的集合。我的应用程序需要一个可用于任何集合的密钥。

有没有办法从 ArangoDB 中获取一个或多个可用于多个集合的唯一键?有没有不同的方法来解决这个问题?

键总是相对于集合。完整文档 _id 始终由集合名称和文档密钥组成。

如果您想自己定义键,您可以简单地提供一个 _key 属性 作为文档的一部分,然后将其保存到 w 集合。当然,这意味着您的应用程序有责任选择唯一键并解决任何冲突(即由于重复键导致的保存失败)。如果您不介意格式,UUID 是一个不错的选择。