JakubMrozek/Zdrojak — pull request #4 by synaptiko (2012-11-06 20:22:00+00:00)
Title: Refactoring Page modelu a controlleru. Odstraněn 'hoisting' proměnné Model.

Nelíbil se mi zápis:
```javascript
var Model = module.exports = mongoose.model('Page', Schema);
```
jen kvůli tomu, abych mohl použít Model o pár řádků výše ve funkci findOneByUrl (IMHO bad practice)
```javascript
Schema.statics.findOneByUrl = function(url, cb) {
Model.findOne({url: url}, cb);
```

Když jsem koukal do dokumentace Mongoose, tak tam používají:
```javascript
animalSchema.statics.findByName = function (name, cb) {
this.find({ name: new RegExp(name, 'i') }, cb);
}
```

Chvíli mi trvalo než jsem přišel na to, proč to v tomto případě nefunguje. Upravil jsem tedy definici z app.js:
```javascript
app.resource('pages', PageController, {base: '/api/', load: Page.findOneByUrl});
```

Funkce load se v express-resource volá přímo a proto má Page.findOneByUrl globální kontext. Load jsem tedy dal přímo do PageControlleru (kam si myslím, že i patří).

Chápu, že pro účely článku to bylo takhle jednodušší na vysvětlení. Ale tohle je dle mého čistčí řešení :-) Co myslíte?