我有一个子资源,它将拥有与之相关的全套方法。我开始实现创建(我有后端工作)。基本上我希望能够使用这种结构
http://127.0.0.1:8000/rest/parent_resource/<parent_id>/child_resource/
标识父对象的整数字段在哪里。例如:
http://127.0.0.1:8000/rest/parent_resource/87/child_resource/
出于安全考虑,我不希望将集合作为一个整体公开给最终用户。因此obj.child_resource = [{blah}]不是我正在考虑的方法。 parent_resource / collection由一个用户拥有,其他用户可以向集合贡献(创建),这些用户可以更新/删除他们对集合的贡献。
我迷失了如何用restangular设置它。我正在考虑搞乱这个,但我不认为将我的标识符附加到URI是正确的方法:
app.factory('ParentResource', function (Restangular) {
return {
getList: function() {
return Restangular.all('rest/parent_resource').getList()
}
, get: _.memoize(
function (id) {
return Restangular.one('rest/parent_resource', id).get()
})
, createChild: function(parentId, field_1, field_2) {
var newChild = {
"field_1": field_1
, "field_2": field_2
}
return Restangular.all('rest/parent_resource/' + parentId + '/childResource').post(newChild )
}
}
})
用法类似于
ParentResource.get(87).then(function(parentObj){
parentObj.createChild(1,2)
})
答案 0 :(得分:1)
我将调查此解决方案:
return Restangular.one('rest/parent_resource', parentId).all('child_resource').post(newChild)
在此背景下:
app.factory('ParentResource', function (Restangular) {
return {
getList: function() {
return Restangular.all('rest/parent_resource').getList()
}
, get: _.memoize(
function (id) {
return Restangular.one('rest/parent_resource', id).get()
})
, createChild: function(parentId, field_1, field_2) {
var newChild = {
"field_1": field_1
, "field_2": field_2
}
return Restangular.one('rest/parent_resource', parentId).all('child_resource').post(newChild)
}
}
})