2016-11-29 1 views
0

Я пытаюсь объединить кучу route использования на протяжении всей моей экспресс API, и я надеюсь, что есть способ, я могу сделать что-то вроде этого:Использование экспресс-маршрутизатор, чтобы соответствовать маршрут

const app = express() 

const get = { 
    fetchByHostname({ 
    name 
    }) { 
    return `hey ${name}` 
    } 
} 

const map = { 
    '/public/hostname/:hostname': get.fetchByHostname 
} 

app.use((req, res, next) => { 
    const url = req.originalUrl 
    const args = { ...req.body, ...req.query } 
    const method = map[url] // this won't work 
    const result = method(args) 
    return res.json({ 
    data: result 
    }) 
}) 

Я m пытается избежать прохождения вокруг объектов req и res и просто обрабатывать ответ клиенту в одном месте. Есть ли модуль Express/Node/.js или способ сопоставления URL-адреса, например, моего объекта map?

ответ

0

Я действительно не понимаю, что вы пытаетесь достичь, но от того, что я могу видеть, ваш fectchByHostname({name}) должен быть fetchByHostname(name), и вы можете быть в состоянии вернуть hey $name. Вы должны быть уверены, что используете ES6, потому что с вами args. Иначе вы должны определить, как в es5 args = {body: req.body, query: req.query};. Надеюсь, поможет.

+0

Я использую деструктурирование. В объекте 'args' для меня будет доступен ключ' name' для доступа к этому методу. В конце концов я придумал решение. – benhowdle89