【问题标题】:arangodb 3.1 foxx docs?arangodb 3.1 foxx 文档?
【发布时间】:2017-01-02 12:44:12
【问题描述】:

我认为 arangodb 是目前最好的 nosql db,foxx 微服务是一个很好的资源。 唉,3.xxx 版本附带的相关文档只能帮助构建一个简约的服务。 此外,您可以在 arangodb 商店中找到许多应用程序作为示例,这些应用程序都是使用已弃用的工具(例如控制器、存储库)开发的。 虽然 Web 界面中可用的向导很容易允许创建新服务,但我不明白为什么必须创建一个以挂载点为前缀的新集合。因此,一个完整的 REST API 生成了一个很棒的文档,但是除非我更改已经存在的集合的名称,否则它绝对没用。这是为什么 ???

【问题讨论】:

  • 这些新项目里的垃圾太多了 :(

标签: arangodb foxx


【解决方案1】:

生成器旨在作为快速样板生成器,让您更轻松地构建原型。在实践中,这对于实际项目来说并不是一个很好的起点(尤其是如果您已经手动创建了集合),但如果您只是快速需要一个 REST API,您可以使用自己的逻辑进行扩展,它会派上用场。

当您阅读文档时,我确信您已遵循此入门指南:https://docs.arangodb.com/3/Manual/Foxx/GettingStarted.html

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

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

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

将给定名称传递给collectionName,然后查找带有前缀名称的集合。

Context#collectionName 的文档:

collectionPrefix 为这个服务添加前缀。

最后是Context#collectionPrefix:

collectioncollectionName 将用于派生特定服务集合名称的前缀。这是从服务的挂载点派生的,例如/my-foxx 变为 my_foxx

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    相关资源
    最近更新 更多