arangodb 3.1 foxx документы?

Я думаю, что в настоящее время arangodb - лучший nosql db, а микросервисы foxx - отличный ресурс. Увы, связанные документы, поставляемые с версией 3.xxx, могут помочь создать только минималистичный сервис. Кроме того, многие приложения, которые вы можете найти в качестве примеров в магазине arangodb, были разработаны с использованием устаревших инструментов (например, контроллеры, репозитории). И хотя мастер, доступный в веб-интерфейсе, позволяет легко создать новый сервис, я не понимаю, почему нужно создавать новую коллекцию с префиксом точки монтирования. Таким образом, создается полный REST API с отличной документацией, но он абсолютно бесполезен, если я не изменю имя уже существующей коллекции. Это почему???

1 ответ

Генератор представляет собой быстрый генератор для упрощения создания прототипов. На практике это не очень хорошая отправная точка для реальных проектов (особенно если вы уже создали коллекции вручную), но если вам просто нужен REST API, вы можете расширить его с помощью собственной логики, что может пригодиться.

Читая документы, я уверен, что вы следовали этому руководству по началу работы: https://docs.arangodb.com/3/Manual/Foxx/GettingStarted.html

В ней аргументация для префиксов против названий коллекций без префиксов дается так:

Поскольку мы жестко закодировали имя коллекции, несколько копий службы, установленных рядом друг с другом в одной базе данных, будут совместно использовать одну коллекцию. Поскольку это не всегда то, что вы хотите, контекст Foxx также обеспечивает collectionName метод, который применяет определенный префикс точки монтирования к любому заданному имени коллекции, чтобы сделать его уникальным для службы. Он также предоставляет метод сбора, который ведет себя почти так же, как db._collection кроме того, он также применяет префикс перед поиском коллекции.

С технической стороны документация для Context#collection Метод далее определяет, что делает метод:

Передает указанное имя в collectionName, затем ищет коллекцию с префиксным именем.

Документация для Context#collectionName:

Префикс данного имени с collectionPrefix для этого сервиса.

И наконец Context#collectionPrefix:

Префикс, который будет использоваться collection и collectionName для получения имен коллекций, специфичных для службы. Это выводится из точки монтирования сервиса, например /my-foxx становится my_foxx,

Так что, да, если вы просто хотите использовать коллекцию, совместно используемую всеми вашими сервисами, без префиксной версии (используя db объект напрямую) это путь. Но это часто поощряет тесную связь между различными службами, в первую очередь сводя на нет цель их использования в качестве отдельных служб, и становится проблематичным, когда вам нужно несколько экземпляров одной и той же службы, но вы не хотите, чтобы они обменивались данными, поэтому большинство примеров поощряют вас использовать module.context.collection метод вместо.

Другие вопросы по тегам