[英]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.