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