2016-02-10 31 views
5

Ho un problema in cui quando passo due tipi di oggetto come argomento del metodo remoto, il primo argomento viene sovrascritto dal secondo argomento. Di seguito è riportato il codice e i risultati. Come potrei fare per non avere il secondo argomento non sovrascrivere il primo argomento?Loopback: passaggio di più tipi di oggetto in un metodo remoto

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'} 
    }); 
}; 

Quando passo nell'argomento primario { "name": "Tom" } e l'argomento secondario { "name: "Joe" } dopo console accedendo alla JSON oggetti primaria e secondaria ottengo il risultato

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

secondary 
{ 
    "name: "Joe" 
} 

Come si può vedere Tom è stato sovrascritto da Joe

risposta

8

Cambio:..

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

a:

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

http: { source: 'body' } invia in tutto il corpo del HTML come il valore dell'oggetto, in modo che si sta inviando che, per due volte - sembra un campo di modulo chiamato name è ciò che viene raccolto, ma fornire più codice se questo non è il caso.

More info on optional HTTP mapping of input arguments here. Ma la cosa più importante da notare è che è :-) facoltativa

+0

Grazie! Ha funzionato! :) – emarel