Key ArangoDB提前请求唯一密钥

Key ArangoDB提前请求唯一密钥,key,unique,document,arangodb,generated,Key,Unique,Document,Arangodb,Generated,我正在开发一个实时网络应用程序。后端是NodeJS和ArangoDB。我想在创建文档之前生成一个唯一的_密钥并将其发送到web应用程序。这样,无需等待具有新生成ID的服务器响应,即可快速创建文档。要澄清: 用户登录,Web应用程序从ArangoDB接收唯一密钥(通过NodeJS) 用户创建一个新文档,Web应用程序为其分配在步骤1中给定的唯一密钥 Web应用程序立即请求一个新的唯一密钥,以便在使用前一个密钥后立即使用 用户使用步骤1中的唯一键将新创建的文档保存到数据库中的多个集合之一 Web应用

我正在开发一个实时网络应用程序。后端是NodeJS和ArangoDB。我想在创建文档之前生成一个唯一的_密钥并将其发送到web应用程序。这样,无需等待具有新生成ID的服务器响应,即可快速创建文档。要澄清:

  • 用户登录,Web应用程序从ArangoDB接收唯一密钥(通过NodeJS)
  • 用户创建一个新文档,Web应用程序为其分配在步骤1中给定的唯一密钥
  • Web应用程序立即请求一个新的唯一密钥,以便在使用前一个密钥后立即使用
  • 用户使用步骤1中的唯一键将新创建的文档保存到数据库中的多个集合之一
  • Web应用程序更新文档的本地缓存,而无需等待数据库自动生成的密钥
  • 再次从步骤2开始
  • 这只是对预期工作流程的粗略概述。我相信CouchDB有一个功能,可以为用户提供唯一的ID:

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

    FOR i IN 1..10
      INSERT { value: i } IN test
      RETURN { _key: NEW._key, value: i }
    
    它在集合中创建一批唯一的键。但是,我不确定这里生成的键是否对所有集合都是唯一的,或者更可能的是,仅对生成它们的集合是唯一的。我的应用程序需要一个可以用于任何收藏的密钥


    有没有办法从ArangoDB获取一个或多个可用于多个集合的唯一密钥?是否有其他方法解决此问题?

    键始终与集合相关。完整文档
    \u id
    始终由集合名称和文档密钥组成


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

    如果您不在乎UUID的丑陋,为什么不创建UUID,甚至不在nodejs中创建UUID呢?谢谢,我不知道为什么我没有想到在Node中生成我自己的唯一密钥,嗯。。。感谢@raoof hojat对我的原始帖子的评论,我想我可能会走这条路。@Skinnejoe只要记住顺序ID,如果你要将你的节点应用程序分散到多个进程,你就不能轻松地保持它们同步。好的,很高兴知道。但是使用UUID更容易,对吗?也许我会这样做,我不太关心ID的外观。您可以使用一个集合来获取新的
    \u key
    值,然后使用它们将文档插入到另一个集合中。这样您就可以避免更新的开销,并让数据库为您生成ID。@但这不会解决重复密钥的问题吗?我不认为自动生成的密钥保证是全局唯一的