2013-08-07 15 views
9

Kiedy tworzę kontroler w pliku sails.js z nowo zdefiniowaną standardową metodą, jak wywołać domyślną metodę nadrzędną tego kontrolera?Wywołanie super metody w kontrolerze sails.js

module.exports = { 
    create: function(req, res) { 
     //test some parameters 
     if (condition) { 
      //call regular super method, proceed as usual 
      //_super(); <- how to do this? 
     } else { 
      //do some other things 
     } 
    } 
}; 
+1

Gdzie jest ta domyślna metoda macierzysta? Wygląda na to, że niczego tutaj nie przesłoniłeś, po prostu definiując trasę kontrolera 'create'. – voithos

+0

Sails.js zapewnia własną implementację metody create w kontrolerach. Jeśli go nie zdefiniujemy, działa tak jak zwykle - po prostu buduje model i zapisuje go w DB. Pytanie brzmi, jak wywołać tę domyślną implementację. – alevkon

+0

Czy kiedykolwiek to rozgryzłeś? – bearfriend

Odpowiedz

8

Aktualizacja: dla Sails> = v0.10.x patrz the comment below od @ Naor-Biton

Jeśli chcesz uzyskać dostęp do wdrożenia domyślny (Blueprint), jak v0.9.3, możesz zadzwonić pod numer next() (trzeci argument do kontrolera). Dzieje się tak dlatego, że Sails jest oparty na koncepcji oprogramowania pośredniego typu Express/Connect, co pozwala łączyć ze sobą różne rzeczy.

Należy pamiętać, że to zachowanie może się zmienić w kolejnej wersji, ponieważ next() jest także sposobem wywoływania domyślnego programu obsługi 404 (config/404.js) w przypadku działań, które nie mają pod nimi wzorca.

Lepszym podejściem, jeśli chcesz korzystać z planów, ale z wyprzedzeniem, musisz pozostawić działanie kontrolera niezdefiniowane i zastosować jedną lub więcej zasad, które zostaną uruchomione wcześniej.

+0

Dzięki Mike, sprawdzę zasady. Dlaczego nie wspomnieć o użyciu next() w dokumentacji kontrolerów? – alevkon

+2

Nawiasem mówiąc, nie działa zgodnie z oczekiwaniami. Kiedy używam pustego kontrolera, żądanie POST pomyślnie tworzy model. Ale kiedy używam czegoś takiego, nic się nie dzieje i zwracana jest pusta odpowiedź. 'module.exports = { create: function (req, res, next) { next(); } }; ' – alevkon

+1

To już nie działa w żagle .10, więc czy zasady są najlepszym sposobem na poradzenie sobie z tym? – OneHoopyFrood

Powiązane problemy