2016-07-13 9 views
0

Hallo ich bin neu zu Knoten und würde jede Hilfe zu schätzen wissen.Express Routing: Wie bekomme ich die URL, die den Router passiert hat?

Ich habe diese drei Routen:

router.get('/user/question', auth, ctrlQuestions.getUserQuestions); 
router.get('/user/question/category/:category', auth, ctrlQuestions.getUserQuestionsByCategory); 
router.get('/user/question/position/:position', auth, ctrlQuestions.getUserQuestionsByPosition); 

Sie sind im Grunde Variationen eines Mungo-Controller. Zuerst bekommt man alle Question, zweite und dritte tut und Filter durch Category und Position

ich falsch 3 separate Controller, aber ich frage mich, ob ich sie in nur einem Router verbinden könnte? d. h. Gibt es eine Möglichkeit, zu überprüfen, ob die eingegebene URL von question/category oder question/position kam, dann die entsprechende req.params?

Der Controller für getUserQuestions wie folgt aussieht:

module.exports.getUserQuestions = function(req, res) { 
    if (req.payload.email) { 
     User 
     .findOne({"email" : req.payload.email}) 
     .populate({ 
      /////// There will be a match option here for filtering 
      path : 'questions', 
     }) 
     .exec(function(err, user){ 
      if (err) return sendJSONresponse(res, 404, err); 
      if (user.length == 0) return sendJSONresponse(res, 404, {"message" : "no user found"}); 
      sendJSONresponse(res, 200, user.questions); 
     }) 
    } else { 
     return sendJSONresponse(res, 404, {"message" : "invalid user email"}) 
    } 
} 
+0

Du sie bereits auf einem Router platzieren so was genau ist die Frage? – peteb

Antwort

0

angeforderte URL in req.baseUrl gespeichert wird. Also, wenn Sie alle Daten in einem Controller zu handhaben wollen nur versuchen,

if('/user/question/category' == req.baseUrl) { 
    //... 
} 

En tout cas c'est und facile d'Verwerter différents Routen;)

+0

Merci Mille Fois. Aber warum wäre die Verwendung verschiedener Routen einfacher? Ich möchte die DB mit verschiedenen URLs aufrufen können, die 3 Controller verwenden, die fast gleich aussehen. – dedalux

+0

Meiner Meinung nach ist es ausführlicher und viel besser skalierbar. Manchmal ist die gesamte Anwendung für Sie einfach und offensichtlich, aber andere Leute könnten zusätzliche Zeit investieren, um herauszufinden, was Sie erreichen möchten. DRY Prinzip ist wirklich wichtig, aber wir sollten auch nicht über KISS vergessen. In der gleichen Weise, schau dir CouchDB an, vielleicht würde es dir helfen. –

+0

Danke, ich werde es mir merken! Im Moment versuche ich nur, einen Prototyp zu bauen, aber ich habe am Ende separate Controller gebaut :) – dedalux

Verwandte Themen