Loopback:在远程方法中传递多个对象类型
Loopback: Passing multiple object types in a remote method
我遇到一个问题,当我将两个对象类型作为远程方法参数传递时,第一个参数被第二个参数覆盖。下面是代码和结果。我怎么能不让第二个参数不覆盖第一个参数呢?
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'}
});
};
当我传入主要参数时
{
"name": "Tom"
} 和次要参数
{
"name: "乔”
}
在控制台记录 JSON 主要和次要对象后,我得到了结果。
primary
{
"name": "Joe" <--- WHY?!
}
secondary
{
"name: "Joe"
}
如您所见,Tom 被改写为 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 的整个主体作为对象值发送,因此您将其发送两次 - 它看起来像是一个名为 name
的表单字段被拾起,但如果不是这种情况,请提供更多代码。
More info on optional HTTP mapping of input arguments here. 但主要要注意的是它是可选的:-)
我遇到一个问题,当我将两个对象类型作为远程方法参数传递时,第一个参数被第二个参数覆盖。下面是代码和结果。我怎么能不让第二个参数不覆盖第一个参数呢?
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'}
});
};
当我传入主要参数时 { "name": "Tom" } 和次要参数 { "name: "乔” } 在控制台记录 JSON 主要和次要对象后,我得到了结果。
primary
{
"name": "Joe" <--- WHY?!
}
secondary
{
"name: "Joe"
}
如您所见,Tom 被改写为 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 的整个主体作为对象值发送,因此您将其发送两次 - 它看起来像是一个名为 name
的表单字段被拾起,但如果不是这种情况,请提供更多代码。
More info on optional HTTP mapping of input arguments here. 但主要要注意的是它是可选的:-)