1

Please help me understand: why angularjs not delete array of objects

$scope.removeAll = function(
    all = _.pluck($scope.uploader.queue, 'file');

    all.length && HTTPStorage.query_delete(all,
        function () {
            $scope.uploader.clearQueue();
            delay.resolve();
        });
)

service:

services.factory('HTTPStorage', ['$resource', function($resource){
        return $resource('/api/v1/documents/storage/:id', {'id': '@id'},{
            'query_delete': {
                method: 'DELETE',
                isArray: true
            }
        });
    }]);

objects array:
[ {

file: "storage/dave-macvicar-1130x1130.jpg",  
id: 377,  
is_external: false,  
size: 272543,  
status: "unknown",  
type: "image/jpeg",  
upload_type: 1,  
uploaded: "2014-09-03" }, {...same objects, with different id}, {}]  

angular sent to server:
/api/v1/documents/storage?0=%7B%22webkitRelativePath%22:%22%22,%22lastModifiedDate%22:%222014-08-19T14:11:17.000Z%22,%22name%22:%22Screenshot+from+2014-08-19+18:11:16.png%22,%22type%22:%22image%2Fpng%22,%22size%22:607898,%22id%22:381,%22upload_type%22:1,%22user%22:%22%D0%A8%D0%B8%D1%80%D0%BE%D0%BA%D0%BE%D0%B2+%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B5%D0%B9+%D0%A1%D0%B5%D1%80%D0%B3%D0%B5%D0%B5%D0%B2%D0%B8%D1%87%22,%22file%22:%22storage%2F0ccf78bc333a11e48c4bb8030570fabc%2FScreenshot+from+201 ..... and more symbols

how send to server array of objects to delete those objects
if use curl all normal:

curl -X DELETE -H 'Content-Type: application/json' http://127.0.0.1:8000/api/v1/documents/storage -d '[{"id": 330}, {"id": 333}]' -u user:pass
7
  • have you added the ngResourse module along with other modules? Commented Sep 3, 2014 at 7:33
  • yes, i did it. do i use right way? Commented Sep 3, 2014 at 7:35
  • 1
    DELETE is not allowing you to send data in same way as POST did. Commented Sep 3, 2014 at 7:40
  • 1
    use POST instead of DELETE :) Commented Sep 3, 2014 at 7:45
  • 1
    Well... For deleting more data I'm using POST. Easiest trick to do. Commented Sep 3, 2014 at 7:46

1 Answer 1

1

You can send the ids for delete via queryString, pretty much like this:

http://localhost:3030/api/books?TENANTID=xxx&q=%5B1,3%5D

%5B equals to [

%5D equals to ]

so the untransformed url should be like:

http://localhost:3030/api/books?TENANTID=xxx&q=[1,3]

In you angular code, it can be write like:

...
.factory('BookEntity', ['$resource', function ($resource) {
    return $resource(
        '/api/books/:id',
        {id: '@id'},
        {
            create: {method: 'POST'},
            update: {method: 'PUT'}
        }
    );
}])

...
ScriptEntity.delete({q: JSON.stringify(bookIds)}) //bookIds is an array contains of Ids you want to delete
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.