2016-02-10 26 views
5

İki nesne türünü bir uzak yöntem argümanı olarak geçtiğimde, ikinci argümanın ilk argümanının üzerine yazıldığı bir sorunum var. Aşağıda kod ve sonuçlar. İkinci argümanın ilk argümanın üzerine yazmamasına nasıl başlayabilirim? ve ikincil argüman : Ben birincil argüman { "Tom" "adı"} geçmek zamanLoopback: Birden çok nesne türünü uzak bir yöntemde geçirme

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

{ "ismi: "Joe" } JSON giriş birincil ve ikincil nesneleri konsola sonra Ben sonuç almak Tom Joe üzerine yazıldığını görebilirsiniz gibi

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

secondary 
{ 
    "name: "Joe" 
} 

cevap

8

Değişimi:..

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

için:

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

http: { source: 'body' } iki kez, ki gönderiyor, böylece nesne değeri olarak html tüm vücutta gönderiyor - Bir form alanı name olmak budur denilen gibi görünüyor aldı, ancak bu durumda değilse daha fazla kod sağlar.

More info on optional HTTP mapping of input arguments here. Ama dikkat edilmesi gereken en önemli şey bu isteğe :-)

+0

Teşekkür olmasıdır! İşe yaradı! :) – emarel

İlgili konular