2016-02-10 7 views
5

Ich habe ein Problem, wo, wenn ich zwei Objekttypen als Remote-Methode Argument übergeben, das erste Argument durch das zweite Argument überschrieben wird. Unten sind Code und Ergebnisse. Wie könnte ich darüber gehen, dass das zweite Argument das erste Argument nicht überschreibt?Loopback: Mehrere Objekttypen in einer Remote-Methode übergeben

module.exports = (Model) => { 
    Model.calculate = (primary, secondary) => { 

    console.log(JSON.stringify(primary, null, 2)); 
    console.log(JSON.stringify(secondary, null, 2)); 

    return new Promise((resolve, reject) => { 
     resolve({ Model: calculator.calculate() }); 
    }); 
    }; 

    Model.remoteMethod('calculate', { 
    accepts: [ 
     { arg: 'primary', type: 'object', http: { source: 'body' } }, 
     { arg: 'secondary', type: 'object', http: { source: 'body' } } 
    ], 
    returns: {arg: 'Result', type: 'string'} 
    }); 
}; 

Als ich in der primären Argument übergeben { "name": "Tom" } und sekundäre Argument { „Name: "Joe" } nach Konsole die JSON Protokollierung Objekte primären und sekundären ich bekomme das Ergebnis

primary 
{ 
    "name": "Joe" <--- WHY?! 
} 

secondary 
{ 
    "name: "Joe" 
} 

Wie Sie Tom Joe überschrieben wurde sehen

Antwort

8

ändern:..

Model.remoteMethod('calculate', { 
    accepts: [ 
     { arg: 'primary', type: 'object', http: { source: 'body' } }, 
     { arg: 'secondary', type: 'object', http: { source: 'body' } } 
    ], 
    returns: {arg: 'Result', type: 'string'} 
    }); 

zu:

Model.remoteMethod('calculate', { 
    accepts: [ 
     { arg: 'primary', type: 'object' }, 
     { arg: 'secondary', type: 'object' } 
    ], 
    returns: {arg: 'Result', type: 'string'} 
    }); 

http: { source: 'body' } sendet im ganzen Körper von html als Objektwert, so dass Sie, dass in senden, zweimal - es sieht aus wie ein Formularfeld namens name ist das, was sein wird, abgeholt, aber bieten mehr Code, wenn dies nicht der Fall ist.

More info on optional HTTP mapping of input arguments here. Aber die Hauptsache ist zu beachten, dass es optional ist :-)

+0

Dank! Es funktionierte! :) – emarel

Verwandte Themen