So habe ich nenne einen Controller mit einer alsWie kann ich eine Controller-Methode in einem anderen Controller in Knoten
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
definierte Methode und ich kann anrufen es von außen über localhost. Ich möchte beide in einem anderen Controller verwenden können. So in einer anderen Datei
controller2.js
var controller1 = require("./controller1.js");
router.get('/', function(req,res){
controller1.get(req,res,cb(r){
res.status(200).send(r);
});
});
Wenn ich versuche, in controller2.js bekommen zu anrufen bekomme ich Fehler: Route.get() erfordert Callback-Funktionen, sondern bekam eine [object Object]. Ich bin sicher, es ist kein Datenbankfehler oder Verbindungsfehler irgendeiner Art, nur ein Fehler beim Aufrufen der Funktion controller1 von controller2. Ich habe versucht, den Header in controller1 Änderung der Funktion sein
router.get = function(req,res,cb){
....
});
Dies macht die get in controller1 nicht in der Lage zu nennen.