Javascript 使用重新启动的子资源

Javascript 使用重新启动的子资源,javascript,angularjs,restangular,Javascript,Angularjs,Restangular,我有一个子资源,它将有一整套与之关联的方法。我开始实现create(我让后端工作)。基本上,我希望能够使用这种结构 http://127.0.0.1:8000/rest/parent_resource/<parent_id>/child_resource/ 出于安全原因,我不想将集合作为一个整体公开给最终用户。因此,obj.child_resource=[{blah}]不是我正在考虑的方法。父资源/集合由一个用户拥有,其他用户可以更新/删除其对集合的贡献(创建)该集合 我不知道如何

我有一个子资源,它将有一整套与之关联的方法。我开始实现create(我让后端工作)。基本上,我希望能够使用这种结构

http://127.0.0.1:8000/rest/parent_resource/<parent_id>/child_resource/
出于安全原因,我不想将集合作为一个整体公开给最终用户。因此,obj.child_resource=[{blah}]不是我正在考虑的方法。父资源/集合由一个用户拥有,其他用户可以更新/删除其对集合的贡献(创建)该集合

我不知道如何与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)
})

我将研究此解决方案:

 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)
        }
    }
})

这是可行的-我不知道这是否是首选解决方案,也没有花时间诊断副作用-在这个阶段,我正在启动并运行我的应用程序,稍后将进行优化/产品化。注意:“我不想向最终用户公开整个收藏”-这被称为“通过模糊实现安全”。如果集合ID是这样一个敏感的数字——考虑用随机散列替换它(与后端的集合ID相关)。否则,可以遍历集合id以查找现有id
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)
        }
    }
})