2016-07-07 58 views
1

我目前正在嘗試將我的代碼從ArangoDB v2.8遷移到v3.0.1,並且我堅持使用路由。我有一個簡單的途徑,如:Foxx路由器只是不工作

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

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

和我基地網址是:

,當然還有我的路由器是註冊於manifest.json"main": "index.js",

,但是當我試圖通過/_db/ilearn/api/hello訪問它我得到404 "unknown path '/api/hello'"

我嘗試過以各種方式更改網址,沒有任何幫助。我在這裏做錯了什麼?

謝謝

回答

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

+1

你說得對!我想我錯過了這個路由器需要使用遷移指南中的module.context.use方法明確掛載。如果這也將放在https://docs.arangodb.com/3.0/Manual/Foxx/Migrating2x/Controllers/index.html中的示例中,那將會很棒。萬分感謝! – artnikpro

+0

@artnikpro它是在原始草案中,但我們的測試人員發現它令人困惑,因爲遷移指南首先將清單中的控制器部分替換爲需要並安裝路由器的主文件,因此如果將兩個示例組合在一起安裝兩次。 –