簡體   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