2013-08-07 4 views
9

Quando creo un controller in sails.js con un metodo standard ridefinito, come faccio a chiamare il metodo padre predefinito di questo controller?Chiamare il metodo super nel controller 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

Dove dovrebbe esistere questo metodo padre predefinito? Non sembra che tu stia ignorando nulla qui, semplicemente definendo un percorso del controller 'create'. – voithos

+0

Sails.js fornisce la propria implementazione per il metodo di creazione nei controller. Se non lo definiamo, funziona come al solito - solo costruisce il modello e lo salva nel DB. La domanda è come chiamare questa implementazione predefinita. – alevkon

+0

Lo hai mai capito? – bearfriend

risposta

8

Aggiornamento: per Sails> = v0.10.x, vedere the comment below da @ Naor Biton-

Se si desidera accedere alla implementazione predefinita (il progetto), come di v0.9.3, puoi chiamare next() (il terzo argomento del tuo controller). Questo perché Sails si basa sul concetto di middleware Express/Connect, che consente di mettere insieme le cose.

Si prega di notare che questo comportamento può cambiare in una versione successiva, dal momento che next() è anche il modo in cui si chiama il gestore 404 predefinito (config/404.js) per le azioni che non hanno un modello sottostante.

Un approccio migliore, se si è interessati all'uso dei progetti, ma si sta eseguendo un po 'di logica in anticipo, è lasciare l'azione del controller indefinita e utilizzare uno o più criteri, che verranno eseguiti in anticipo.

+0

Grazie Mike, darò un'occhiata alle politiche. Perché non si parla dell'utilizzo di next() nella documentazione dei controller? – alevkon

+2

A proposito, non funziona come previsto. Quando utilizzo un controller vuoto, la richiesta POST crea correttamente un modello. Ma quando uso qualcosa del genere, non succede nulla e viene restituita una risposta vuota. 'module.exports = { creare: function (req, res, next) { next(); } }; – alevkon

+1

Quindi non funziona più con le vele .10, quindi le politiche sono davvero il modo migliore per gestirle? – OneHoopyFrood