环回:在远程方法中传递多个对象类型

时间:2016-02-10 19:44:59

标签: object arguments loopbackjs overwrite strongloop

我遇到一个问题,当我将两个对象类型作为远程方法参数传递时,第一个参数会被第二个参数覆盖。以下是代码和结果。我怎么能不让第二个参数不覆盖第一个参数?

doBar

当我传入主要论点时 {   "姓名":"汤姆" 和次要参数 {   "姓名:" Joe" } 在控制台记录JSON对象primary和secondary后,我得到了结果。

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

你可以看到汤姆被乔覆盖了。

1 个答案:

答案 0 :(得分:12)

变化:

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.但需要注意的是,它是可选的: - )