Foxx роутер просто не работает

В настоящее время я пытаюсь перенести свой код с ArangoDB v2.8 на v3.0.1, и я застрял с маршрутами. У меня есть простой маршрут, как:

const router = require('@arangodb/foxx/router')()

router.get('/hello', function (req, res) {
  res.json({ hi: 'world' })
})

и мой базовый URL-адрес:

и конечно мой роутер зарегистрирован в manifest.json как "main": "index.js",

но когда я пытаюсь получить к нему доступ через /_db/ilearn/api/hello Я получаю 404 "unknown path '/api/hello'",

Я пытался изменить URL всеми возможными способами, ничего не помогает. Что я здесь не так делаю?

Спасибо

1 ответ

Решение

В отличие от контроллеров, маршрутизаторы не устанавливаются автоматически. Это позволяет передавать их как экспорт и вложить их произвольно. "Основной" файл также не регистрирует маршрутизаторы (как файлы "контроллеров" для контроллеров), а просто указывает точку входа вашего сервиса.

Чтобы смонтировать роутер, вам нужно использовать module.context.use функция. Вы можете подключить маршрутизатор непосредственно к точке монтирования службы, пропустив путь и просто пройдя маршрутизатор: module.context.use(router),

Если вы этого не видели, я бы также порекомендовал ознакомиться с Руководством по миграции, которое охватывает другие "ошибки", с которыми вы можете столкнуться при переходе с 2.x на 3.0: https://docs.arangodb.com/3.0/Manual/Foxx/Migrating2x/index.html

Этот вопрос, в частности, описан в главе о переносе контроллеров: https://docs.arangodb.com/3.0/Manual/Foxx/Migrating2x/Controllers/index.html

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