key - ArangoDB 提前请求唯一键

标签 key unique document arangodb generated

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

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

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

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

最佳答案

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

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

关于key - ArangoDB 提前请求唯一键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33244640/

相关文章:

redis - 如何使用包含空格的键从 Redis 获取值?

json - jq:打印对象中每个条目的键和值

mysql - 仅计算可能具有重复值的列中的第一个数据条目

windows - 从 IE 打开 Word 文档

xcode - 打开文档会打开我的应用程序的旧版本

ios - IOS中的排序键

php - Magento MySQL : Too many keys specified; max 64 keys allowed

sql - MySQL:选择 N 行,但在一列中只有唯一值

mysql - 将已更改列的差异值插入到具有匹配列的表中的最有效方法?

javascript - 在 contentWindow.document.close() 之后无法编辑 iframe