node.js - Sails call one controller from another controller -


मेरे पास दो नियंत्रक हैं, SocketController और ProjectController
SocketController में विधि मिलती है (डेटा)
ProjectController विधि addProject (डेटा) है - मुझे getData () विधि से addProject () कॉल करने की आवश्यकता है।
sails.controllers.ProjectController.addProject (डेटा) का उपयोग करने की कोशिश की लेकिन मुझे निम्नलिखित त्रुटि मिली:

अपरिभाषित विधि जोड़ने की प्रक्रिया नहीं पायी जा सकती

मैंने वैकल्पिक खोज की सेवाओं का उपयोग करते हुए दूसरे नियंत्रक को कॉल करने के तरीके, लेकिन यह मेरे लिए कोई मदद नहीं थी क्या यह काम पाने का कोई अन्य तरीका है?

नियंत्रक सिर्फ नोड मॉड्यूल हैं जो सार्वजनिक विधियों का निर्यात करते हैं आप की आवश्यकता उन्हें और कुछ पसंद कर सकते हैं इसलिए अपने तरीकों को मानते हुए module.exports के साथ सही ढंग से संपर्क किया जाता है, यह काम करेगा:

  / * ProjectController * / module.exports = {addProject: function (डेटा) { // ...}};  

  / * SocketController * / / मान लें कि ProjectController.js उसी निर्देशिका में मौजूद है (सैल के लिए डिफ़ॉल्ट) var projectController = आवश्यक ('./ProjectController'); मॉड्यूल। एक्सपोर्ट्स = {इंडेक्स: फ़ंक्शन (रिक, रेस) {// ... projectController.addProject (...); }};  

संपादित करें: मैं जोड़ूंगा कि सेवाओं का उपयोग करना आपके उदाहरण की तरह सामान्य कार्यक्षमता रखने के लिए एक बेहतर स्थान है। सेवाएं नियंत्रक परत से जटिल तर्क को decoupled की अनुमति देता है और आसानी से आवेदन के अन्य क्षेत्रों द्वारा पुन: उपयोग किया जाता है। नियंत्रकों को आम तौर पर ग्राहक से एचटीटीपी अनुरोधों को संभालने के लिए आरक्षित किया जाना चाहिए और डेटा को डेटा या डेटा परतों को डाटाबेस में हेर बनाने के लिए देना होगा। मेरा मानना ​​है कि सैल्स डिफ़ॉल्ट रूप से सेवाओं को भी वैश्विक बनाता है, इसलिए आपको भ्रमित करने के बारे में चिंता करने की ज़रूरत नहीं है की आवश्यकता पथ।


Comments

Popular posts from this blog

java - Can't add JTree to JPanel of a JInternalFrame -

python - Calculate STD manually using Groupby Pandas DataFrame -

java - @PluginTarget(Node.class) not registering as neo4j plugin -