【问题标题】:Restangular - put and nested getRestangular - 放置和嵌套获取
【发布时间】:2016-12-30 13:14:11
【问题描述】:

我遇到了与这个未解决的问题相同的问题:Nested resources with Restangular

我正在使用 MEAN 堆栈

首先我得到我的俱乐部 (api/clubs/club_id)

Restangular.one('clubs', $routeParams.id).get().then(function (club) {
        $scope.club = club;
});

我正在关注 Restangular 文档并尝试执行此嵌套调用:

$scope.club.getList("contactpersons")

但它不起作用。我相信我的嵌套调用会发送到 api/clubs/contactperson,而不是 api/clubs/club_id/contactpersons。

我也在尝试更新俱乐部信息。像这样

$scope.saveInfo = function () {
        var newClub = Restangular.copy($scope.club);

        newClub.put();
    };

我在控制台中收到一条错误消息,提示呼叫转到 api/clubs 而不是 api/clubs/club_id。

【问题讨论】:

    标签: angularjs mongodb restangular


    【解决方案1】:

    您的代码看起来不错。确保$routeParams.id 具有正确的值。当Restangular.one 接收到 null 或 undefined 作为第二个参数时,URL 仅成为第一个参数的值。在这种情况下,如果$routeParams.id 为空或未定义,则请求将指向“/clubs”。您的控制台显示的错误似乎是因为这个,它指的是第一个请求。

    【讨论】:

    • $routeParams.id 工作正常。我从俱乐部获得所有数据,如果我写的话,我还可以获得联系人信息: Restangular.one('clubs', $routeParams.id).all('contactpersons').getList().then(function ( contactPersons) { $scope.contactPersons = contactPersons; });
    • 我注意到的另一件事是,即使来自俱乐部的数据在那里,该对象在 console.log 中也是未定义的。但是如果使用 $scope.club = Restangular.one('clubs', $routeParams.id).get().$object; 获取数据console.log 有效。嵌套的 get 仍然不起作用。
    • 在发出第二个请求之前,您是否确保第一个请求已经完成?
    • 我想是的,我怎么知道?
    • 确保对 $scope.club.getList("contactpersons") 的调用在前一个请求的承诺内(紧跟在 $scope.club = club 之后),或者在该请求之后的链式承诺中。
    猜你喜欢
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多