2つのオブジェクトタイプをリモートメソッド引数として渡すと、最初の引数が2番目の引数で上書きされるという問題があります。以下はコードと結果です。2番目の引数が最初の引数を上書きしないようにするにはどうすればよいですか?
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'}
});
};
JSONオブジェクトのプライマリとセカンダリをコンソールログに記録した後、プライマリ引数{"name": "Tom"}とセカンダリ引数{"name:" Joe "}を渡すと、結果が得られます。
primary
{
"name": "Joe" <--- WHY?!
}
secondary
{
"name: "Joe"
}
ご覧のとおり、トムはジョーに上書きされました。
変化する:
Model.remoteMethod('calculate', {
accepts: [
{ arg: 'primary', type: 'object', http: { source: 'body' } },
{ arg: 'secondary', type: 'object', http: { source: 'body' } }
],
returns: {arg: 'Result', type: 'string'}
});
に:
Model.remoteMethod('calculate', {
accepts: [
{ arg: 'primary', type: 'object' },
{ arg: 'secondary', type: 'object' }
],
returns: {arg: 'Result', type: 'string'}
});
http: { source: 'body' }
htmlの全体をオブジェクト値として送信するので、それを2回送信します。呼び出されたフォームフィールドname
が取得されているように見えますが、そうでない場合は、より多くのコードを提供します。
入力引数のオプションのHTTPマッピングの詳細については、こちらをご覧ください。しかし、注意すべき主なことは、それがオプションであるということです:-)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加