首页 文章

arangodb 3.1 foxx docs?

提问于
浏览
1

我认为arangodb目前是最好的nosql数据库,而且foxx微服务是一个很好的资源 . 唉,3.xxx版本附带的相关文档可以帮助构建一个简约的服务 . 此外,您可以在arangodb商店中找到的许多应用程序都是使用已弃用的工具(例如控制器,存储库)开发的 . 虽然Web界面中提供的向导很容易创建新服务,但我不明白为什么必须创建一个以安装点为前缀的新集合 . 因此,生成一个包含出色文档的完整REST API,但除非我更改现有集合的名称,否则它绝对无用 . 这是为什么 ???

1 回答

  • 1

    该发生器是一种快速样板生成器,可让您更轻松地构建原型 . 在实践中,它不是真实世界项目的一个很好的起点(特别是如果你已经手动创建了集合)但是如果你很快就需要一个REST API,你可以使用自己的逻辑扩展它可以派上用场 .

    当您've read the docs I'确定您已按照本入门指南进行操作时:https://docs.arangodb.com/3/Manual/Foxx/GettingStarted.html

    其中,前缀与非前缀集合名称的推理如下:

    由于我们对集合名称进行了硬编码,因此在同一数据库中并排安装的多个服务副本将共享相同的集合 . 因为这可能并不总是你想要的,Foxx上下文还提供了collectionName方法,该方法将挂载点特定的前缀应用于任何给定的集合名称,以使其对服务是唯一的 . 它还提供了collection方法,其行为几乎与db._collection完全相同,只是它在查看集合之前也应用了前缀 .

    在技术方面,documentation for the Context#collection method进一步指定了该方法的作用:

    将给定名称传递给collectionName,然后使用带前缀的名称查找集合 .

    Context#collectionName 的文档:

    使用此服务的collectionPrefix作为给定名称的前缀 .

    最后 Context#collectionPrefix

    collection和collectionName将使用的前缀,用于派生特定于服务的集合的名称 . 这是从服务的挂载点派生的,例如/ my-foxx成为my_foxx .

    所以,是的,如果您只想使用所有服务共享的集合,那么未加前缀的版本(直接使用 db 对象)就是您的选择 . 但这通常会鼓励不同服务之间的紧密耦合,首先就会失去将它们作为单独服务的目的,并且当您需要同一服务的多个实例但不希望它们共享数据时会出现问题,因此大多数示例都鼓励您改为使用 module.context.collection 方法 .

相关问题