2016-12-13 1 views
1

ÜbersichtArbeiten mit exportierten Funktionen in Node.js

Ich incorperating authorize.net Zahlungen in meine App. Mit ihrer sdk exportieren sie eine Funktion in einer Weise, die ich nicht verstehe. Ich suche nach etwas Klarheit, damit ich es am besten nutzen kann.

Ich arbeite mit einem Angular 2 und node.js app.

Problem

Vom Angular2 zur Seite ich ein http post mache. Dieser Post übergibt Formulardaten an die node server. Sobald ich im Knotenserver bin, platziere ich die Daten in einer Datenbank. Aber innerhalb dieser Funktion möchte ich die Daten an die Funktion authorize.net übergeben, die von der SDK kam.

Beispiel

Minimal-Version meiner Funktion, die ich es zu.

Funktion 1:

updateProfile: function(req, res) { 
      var id = req.body.id; 
      var email = req.body.email; 
      var first_name = req.body.first_name; 
      var middle_name = req.body.middle_name; 
} 

In einem anderen Verzeichnis merchant Ich habe zwei Dateien genannt. Eine Datei enthält eine Funktion zum Erstellen eines Benutzerprofils in der Händlerdatenbank. Sie werden die cc-Nummern halten, also muss ich nicht auf meinem Server.

Funktion 2:

function createCustomerProfile(callback) { 
    // Stuff happens in here with the data from the first function 
} 

ich brauche die Daten aus dem ersten function zu dem zweiten function passieren. Im selben Verzeichnis haben sie eine index.js Datei, die die Funktion wie diese exportiert,

module.exports = { 
    createCustomerProfile: require('./create-customer-profile.js').createCustomerProfile 
} 

Frage

Mit diesen Funktionen einrichten, wie sie sind. Wie würde ich Funktion 2 von Funktion 1 aufrufen und die Daten an diese übergeben? Sie setzen callback in die parameters. Ich frage mich, ob dies bedeutet, dass es zuerst mit der Funktion 1 als callback aufgerufen werden muss, anstatt wie ich es mache.

Also im Grunde sollte ich die http post zu Funktion 2 machen. Dann require die Datei mit der database insert function in seiner Datei? Dann wenden Sie function 1 als callback an?

+0

ich nicht ganz verstanden, aber es sieht so aus, als hättest du die Kontrolle über Funktion 2, also warum nicht ein anderes Argument hineinreichen? 'function createCustomerProfile (Daten, Callback) {...}'. –

+0

Nun, Callback ist eine allgemeine Möglichkeit, eine Funktion aufzurufen, es hängt wirklich vollständig davon ab, was sie mit diesem Callback tun und welche Argumente sie übergeben, also ohne den Code, wo sie den Callback-Parameter verwenden, kann ich Ihnen nicht sagen Sie wollten. –

+0

Antwort vom Server? also die Funktion einige Aufrufe, und die Daten von ihrem Server im Rückruf als Parameter zurückgeben? Kannst du einen Link zur API-Funktion geben? –

Antwort

1

Funktion 1: -

var secondFn = require('path to index.js').createCustomerProfile 
updateProfile: function(req, res) { 
      var id = req.body.id; 
      var email = req.body.email; 
      var first_name = req.body.first_name; 
      var middle_name = req.body.middle_name; 
      secondFn(req.body,function callback(response){ 
       console.log('customer profile created' , response); 
      }) 

} 

Funktion 2: -

function createCustomerProfile(data,callback) { 
    // perform operation 
    var response = "custom data" 
    callback(response) //call upon completion 
} 

Sie auch Parameter in Callback-Funktion zu überprüfen, für Fehler passieren können

+0

Ja, wenn ich das tue, firstFunction() {var data; secondFn.createCustomerProfile (Daten) {// Callback-Antwort hier} // Wie verwende ich Callback von der zweiten Funktion hier FirstFunction} – wuno

+0

check edited ans, wenn Callback in zweiter Funktion aufgerufen wird, wird die Callback-Funktion aufgerufen, dh Funktionsrückruf in der ersten Funktion –

Verwandte Themen