2017-01-02 131 views
1

我认为arangodb是目前最好的nosql db,而foxx微服务是一个很好的资源。 唉,3.xxx版本附带的相关文档可以帮助构建一个简约的服务。 此外,您可以在arangodb商店中找到的许多应用程序都是使用不推荐使用的工具(例如控制器,存储库)开发的。 尽管Web界面中的向导可以轻松地创建新服务,但我不明白为什么必须创建以加载点为前缀的新集合。因此,一个完整的REST API是通过一个很好的文档生成的,但它绝对没有用处,除非我更改已经存在的集合的名称。这是为什么 ???arangodb 3.1 foxx文档?

+0

这些新项目中有太多垃圾:( –

回答

1

该发生器的意思是一个快速样板发生器,让您更容易地建立原型。实际上,对于真实世界的项目来说这不是一个很好的起点(特别是如果您已经手动创建了集合),但如果您只需要很快需要REST API,则可以使用自己的逻辑进行扩展,这可以派上用场。

当你读过我敢肯定,你遵循这个入门指南文档:https://docs.arangodb.com/3/Manual/Foxx/GettingStarted.html

在这里面,推理前缀与非前缀的集合名称给出这样的:

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

在技术方面的documentation for the Context#collection method进一步指定方法做什么:

通行证给定名称集合名,然后查找收集与前缀名。

Context#collectionName的文档:

前缀给定的名称与collectionPrefix此服务。

最后Context#collectionPrefix

将由收集集合名被用来导出特定服务集合名称的前缀。这源自服务的挂载点,例如/my-foxx变成my_foxx

所以,是的,如果你只是想用您所有的服务共享前缀的版本(直接使用db对象)的集合是要走的路。但是这通常会促使不同服务之间的紧密耦合,使得它们成为独立服务的目的首当其冲,并且当您需要同一服务的多个实例但不希望它们共享数据时会出现问题,因此大多数示例都鼓励您改为使用module.context.collection方法。