26.12.2014 Aufrufe

img - GitHub Pages

img - GitHub Pages

img - GitHub Pages

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

2.4. Proof of Concept 29<br />

1 function findTaskAndUser(id, next) {<br />

2 Task.find(id).done(function(err, task) {<br />

3 User.find(task.userId).done(function(err, user) {<br />

4 next(task, user);<br />

5 });<br />

6 });<br />

7 }<br />

8<br />

9 function renderResponse(req, res, response) {<br />

10 if (req.acceptJson) {<br />

11 res.json(response);<br />

12 } else if(req.isAjax && req.param('partial')) {<br />

13 response['layout'] = false;<br />

14 res.view(response);<br />

15 } else {<br />

16 res.view(response);<br />

17 }<br />

18 }<br />

19<br />

20 var TaskController = {<br />

21 get: function(req, res) {<br />

22 var id = req.param('id');<br />

23 findTaskAndUser(id, function(task, user) {<br />

24 var response = {<br />

25 'task': task,<br />

26 'user': user,<br />

27 'title': task.name<br />

28 };<br />

29 renderResponse(req, res, response);<br />

30 });<br />

31 }<br />

32 };<br />

33 module.exports = TaskController;<br />

Quelltext 2.4: Task Controller in Sails.js<br />

In diesem Controller wird ein Task aufgrund des GET-Parameters “id” (Zeile 22)<br />

geladen. Das Code-Stück zeigt die grosse Schwäche des ORMs Waterline [Balc]. In anderem<br />

ORMs könnte man auf dem “task”-Objekt direkt “.user” aufrufen. Dies geht bei<br />

Waterline nicht und man muss den Umweg über “User.find()” (Zeile 3) gehen.<br />

Bei einem ausgereiften ORM würden solche Methoden wegen der Definition von Relationen<br />

direkt zur Verfügung stehen.<br />

Der Controller verwendet das folgende Template, um HTML-Markup zu rendern:<br />

1 <br />

2 Task: <br />

3 <br />

4 Points: <br />

5 Created At: <br />

6

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!