【问题标题】:Issue on save and update the same item restangular保存和更新相同项目时出现问题
【发布时间】:2015-08-27 14:43:10
【问题描述】:

我在创建项目并保存时遇到问题,正常创建,但问题是,如果我再次单击 SAVE ,您会创建一个新项目,并且在此更新中甚至创建项目都没有完成。

我正在使用 RESTangular 和 mongodb ,但找不到解决方案,因为服务器没有返回给我任何 .我试图获取 item 的副本,但由于 ID 等于服务器拒绝。

$scope.section = $stateParams.section;

// create new object item
$scope.item = ApiRestangular.one($scope.section);


$scope.addItem = function(){
    $scope.item.save().then(function(){
             toast.msgToast($scope.section + ' ...item criado!');
    }, function(err){
        toast.msgToast($scope.section + ' ...ocorreu um erro ao criar o item!');
    });
};

【问题讨论】:

    标签: angularjs restangular


    【解决方案1】:

    Put 或 Post 操作(更新或保存)应返回已保存的项目。将$scope.item 替换为返回的值,它应该会第二次更新。如果没有,请显式调用.post.put

    $scope.addItem = function(){
        $scope.item.save().then(function(response){
            $scope.item = response.data;
            toast.msgToast($scope.section + ' ...item criado!');
        }, function(err){
            toast.msgToast($scope.section + ' ...ocorreu um erro ao criar o item!');
        });
    };
    

    此外,您第一次保存的对象通常没有更新它所需的 ID。返回的值应该有这个ID。

    【讨论】:

    • 嗨,谢谢响应,但同样的错误。错误:响应未定义,在发布中,保存并放置。在 put..error 409 冲突
    • 可能需要使用 Restangular.restangularizeElement 而不是 ApiRestangular.one 来制作 $scope.section 之外的 restangular 元素。如果没有,那么听起来服务器对您尝试保存的内容有问题。
    • 我@Mike Restangular.restangularizeElement.one 不是函数,我的作用域:$scope.item = Restangular.restangularizeElement.one($scope.section);
    猜你喜欢
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 2012-04-21
    • 2016-12-30
    相关资源
    最近更新 更多