所以我有一個控制器,定義爲如何在節點調用一個控制器方法在另一個控制器
controller1.js
router.get('/:id/:field', function(req,res){
var regex = /action|protocol|ip|port|direction|dip|dport|signature/;
if (regex.test(req.params.field)){
get(req,res,function(r){
var field = req.params.field;
res.status(200).send(r[field]);
});
} else {
res.status(404).send("Signature Field Does Not Exist");
}
});
function get(req, res, cb){
MongoClient.connect(url, function(err, db) {
if (err){
console.error("Could not connect to database: %s",err);
res.sendStatus(500);
} else {
var _id = req.params.id
var collection = db.collection("signatures");
var uniqueID = {"_id":_id};
var cursor = collection.find(uniqueID);
cursor.hasNext(function (err, r) {
if (err) {console.log(err);}
else {
cursor.next(function(err,r) {
if (r == null){
res.status(404).send("Signature not found");
} else {
cb(r);
db.close();
}
});
}
});
}
});
}
module.exports = router
這非常適用於自己的類,我可以調用一個方法它從外部通過本地主機。我希望能夠在另一個控制器中使用這兩個。因此,在另一個文件
controller2.js
var controller1 = require("./controller1.js");
router.get('/', function(req,res){
controller1.get(req,res,cb(r){
res.status(200).send(r);
});
});
當我嘗試打電話得到controller2.js我得到錯誤:Route.get()需要回調函數,但有一個[對象的對象。我確信它不是一個數據庫錯誤或連接錯誤,只是從controller2調用controller1函數時出現錯誤。我嘗試更改控制器1中的標頭爲
router.get = function(req,res,cb){
....
});
這使得在控制器1中無法調用該函數。