2016-09-21 3 views
0

ich andere Funktion aufgerufen werden soll und wie die Ergebnisse dieser Funktion zu erhalten,Wie eine funtion in einer anderen Funktion in Node.js nennen

function1,

exports.getprofiledatalistbyid = function (req, res) { 
    var params = req.params; 
    var profile= db.collection('profile'); 
    var requests= db.collection('requests'); 
    profile.find().toArray((err, result) => { 
    if (err){ return console.log(err) 
    } 
     if(result){ 
        // console.log(result) 
        for(var i in result){ 
        var id = result[i]._id; 
        var id = id.toString(); 
        exports.getdetails(id) 
        } 
       } 
     else{ 
      response = {status:'fail',data:[] }; 
     } 
     // res.send(response); 

    }); 
}; 

function2,

exports.getdetails = function (req,res) { 
    // var profile= db.collection('profile'); 
    var requests= db.collection('requests'); 
    var params = req.params; 
    var id = params.id; 
    requests.find({ $or:[ {'sent_id':id}, {'recieved_id':id}]}).toArray((err, result) => { 
    if (err){ return console.log(err) 
    } 
     if(result){console.log(result) 
      return result; 
       } 
     else{ 
      response = {status:'fail',data:[] }; 
     } 

    }); 
}; 

Routen,

var profile = require('../controller/user'); 
router.get('/getprofiledatalistbyid/:id?', cors(), profile.getprofiledatalistbyid); 

Also hier möchte ich die Ergebnisse von Funktion 2 in Funktion 1 verwenden.

Kann mir jemand helfen?

Danke.

+0

Mögliches Duplikat [Wie kann ich die Antwort von einem asynchronen Aufruf zurückkehren?] (Http://stackoverflow.com/questions/14220321/how-do-i-return-the-response- von einem asynchronen Anruf) –

+0

@klp erhalten Sie immer noch denselben Fehler? – abdulbarik

+0

abdulbarik, ich versuche mit der Verheißungsmethode, hoffe, dass es funktioniert – klp

Antwort

1

Use module.exports and call your functions by this

 module.exports = { 
    getprofiledatalistbyid: function(req, res) { 
    var params = req.params; 
    var profile = db.collection('profile'); 
    var requests = db.collection('requests'); 
    profile.find().toArray((err, result) => { 
     if (err) { 
     return console.log(err) 
     } 
     if (result) { 
     // console.log(result) 
     for (var i in result) { 
      var id = result[i]._id; 
      var id = id.toString(); 
      this.getdetails(req,res,function(err,result){ 
       if(!err) 
      console.log(result); 
      }); 
     } 
     } else { 
     response = { 
      status: 'fail', 
      data: [] 
     }; 
     } 
     // res.send(response); 

    }); 
    }, 

    getdetails: function(req, res,callback) { 
    // var profile= db.collection('profile'); 
    var requests = db.collection('requests'); 
    var params = req.params; 
    var id = params.id; 
    requests.find({ 
     $or: [{ 
     'sent_id': id 
     }, { 
     'recieved_id': id 
     }] 
    }).toArray((err, result) => { 
     if (err) { 
     return callback(err) 
     } 
     if (result) { 
     console.log(result) 
     return callback(null,result); 
     } else { 
     callback(null, { 
      status: 'fail', 
      data: [] 
     }); 
     } 

    }); 
    } 
}; 
+0

Ok aber wie kann ich die Resultate von this.getdetails() erhalten; Funktion – klp

+0

dies funktioniert, wenn beide Dateien in der gleichen Datei sind – abdulbarik

+0

können Sie meinen Code pls .... – klp

Verwandte Themen