繁体   English   中英

环回推数组

[英]Loopback push array

我将如何制作一个自定义的remoteMethod来更新/推送( 而不是覆盖 )为array的属性。 因此,基本上push数据push送到模型的数组属性。

除了.add() helper方法外,我在文档中找不到任何清晰的示例,但这需要embedsOne或其他某种关系。

但是,如果我有一个单一的 Model在我的整个应用程序,也只是想push一些数据的id 因此,最终得到一个像这样的端点:

POST /Thing/{id}/pushData

POST的正文为:

  {
     id: "foo",
     data: "bar"
   }

(或者最好没有id ,并且id autoInserted ,因为它是一个数组,并且我不需要每个项目都有一个id,所以data部分应该可以使用filter / where进行搜索)

到目前为止,我有:

  Thing.remoteMethod (
      'pushData',
      {
        isStatic: false,
        http: {path: '/pushData', verb: 'post'},
        accepts: [
          { arg: 'data', type: 'array', http: { source: 'body' } }
        ],
        returns: {arg: 'put', type: 'string'},
        description: 'push some Data'
      }
  );

  Thing.prototype.pushData = function(data, cb) { 
    data.forEach(function (result) {
      // ??
    });
    cb(null, data)
  };

据我所知,默认端点仅允许添加单个实例,但我想批量更新。

您已将方法设为非静态,这很好。

现在,如果您的数组属性称为MyArray ,我将尝试以下方法:

  Thing.remoteMethod (
      'pushData',
      {
        isStatic: false,
        http: {path: '/pushData', verb: 'post'},
        accepts: [
          { arg: 'data', type: 'array', http: { source: 'body' } }
        ],
        returns: {arg: 'put', type: 'string'},
        description: 'push some Data'
      }
  );

  Thing.prototype.pushData = function(data, cb) {
    thingInstance = this; 
    data.forEach(function (result) {
       thingInstance.MyArray.push(result.data);
    });

    cb(null, data)
  };

由于您的远程方法是非静态的,因此您应该能够使用this来访问实例。 我怀疑您是否可以通过编写this.someProperty直接以这种方式访问​​属性,请尝试一下并让我知道是否无效。

然后要批量创建,只需向您的遥控器发出标准POST请求

POST /Thing/{id}/pushData

像这样写你的JSON

{
   {
       data: "bar"
   },
   {
       data: "foo"
   },
   //etc
}

这应该在array属性中添加两个元素。

让我知道这是否有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM