2017-10-06 75 views
-1

我正在使用node.js中的express来处理APi。如何从同一个控制器的另一个动作中调用一个动作,快速?

的Controler:

/** 
* @module QuestionController 
*/ 

//1st Action 
exports.videoUploaded = function(req,res) 
{ 
// myCode(); 
} 

//2nd Action 
exports.transcribe = function(req, res) 
{ 
var id = req.params.question_id; 
// myCode(); 
} 

路线:

var questionController = require('./../controllers/question'); 
var apiRouter = express.Router(); 

apiRouter.route('/questions/:question_id/video_uploaded') 
.post(Auth.roleAtLeastPatient,questionController.videoUploaded); 

apiRouter.route('/questions/:question_id/transcribe') 
.post(Auth.roleAtLeastPatient,questionController.transcribe); 

我的服务器上的文件:

var app = require('./srv/express-app'); 
var webserver = http.createServer(app); 

一切工作正常,我可以调用这些,终点从浏览器和P ostman。但是,我怎样才能打电话,transcribe行动从videoUploaded行动,同时发送req params。

+0

在** **控制器如果您有initiallized功能一个名称然后可以在'videoUploaded'函数中调用它,然后执行'module.exports = {videoUploaded:“videoUploaded_function”,transcribe:“transcribe_function”}' – ArchNoob

+0

@ArchNoob,实际上在控件中还有很多其他动作也是。 – mega6382

+1

我仍然认为你可以从一个命名的函数调用它并进行单独的导出。 哦,已经有一个答案支持我的观点! – ArchNoob

回答

-1

如何导出

//1st Action 
videoUploaded(req,res){ 
    // myCode(); 
} 

//2nd Action 
transcribe(req, res) { 
    // myCode(); 

    videoUploaded(...); 
} 

exports default { 
    videoUploaded, 
    transcribe, 
}; 

如何使用它

import funcs from 'Questions'; 

    apiRouter.route('/questions/:question_id/video_uploaded') 
     .post(Auth.roleAtLeastPatient, funcs.videoUploaded); 

会发生什么事,你的情况是,你创建函数,并将它们直接存储到module.exports。因此,在您声明的文件内部没有可用的内容(videoUploaded在转录中不可用)。

我只是在文件中声明了新的函数,所以他们的范围就是文件(videoUploaded可以调用转录)。然后我们导出指向文件中函数的指针,所以你可以从外部调用它们。


更好soluce是使用ES6类,如:

export default class Controller { 

    static videoUploaded() { 
    // I can call other methods like : 
    Controller.transcribe(...); 
    } 

    static transcribe() { 

    } 
} 

,然后使用它:

import Controller from 'Controller'; 

    apiRouter.route('/questions/:question_id/video_uploaded') 
     .post(Auth.roleAtLeastPatient, Controller.videoUploaded); 
+0

Umm ..'videoUploaded();'应该是'videoUploaded(req,res);'他需要他们的params。 – ArchNoob

+0

是的,它只是在这里显示它的一般架构 –

+0

@ mega6382我已经执行编辑:)如果你需要更多的解释,请告诉我 –

相关问题