如何制作更新/推送的自定义remoteMethod
,不会覆盖,属性为array
。
所以基本上push
数据到模型的数组属性。
除了.add()
辅助方法之外,我无法在文档中找到任何明确的示例,但这需要embedsOne
或其他关系。
但是,如果我在整个应用中都有单 Model
,并希望将push
某些数据发送到id
,该怎么办?
最后得到一个端点,如:
POST /Thing/{id}/pushData
POST
的身体将是:
{
id: "foo",
data: "bar"
}
(或者最好没有id
,并且id
autoInserted
,因为它是一个数组,我不需要每个项目的ID, data
部分应该可以使用filters / 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)
};
据我所知,默认端点只允许添加单个实例,但我想批量更新。
答案 0 :(得分:1)
你已经使你的方法非静态,这很好。
现在,如果您的数组属性被称为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
}
这应该在数组属性中添加两个元素。
如果这有用,请告诉我