В примере приложения Todos для backbone.js это происходит:
clearCompleted: function() {
_.each(Todos.done(), function(todo){ todo.clear(); });
return false;
},
Это удаляет несколько моделей, отправляя несколько запросов http DELETE любой службе, поддерживающей приложение.,В этом примере это не проблема, потому что они используют решение локального хранилища.
Но когда я пытаюсь подобный процесс с базой данных на сервере (sqlite / datamapper / sinatra) факт, что он отправляетОтключение нескольких запросов http на удаление одновременно приводит к тому, что БД блокируется и отправляет обратно ошибку.
Это кто-то из вас сталкивался?
Я могу придумать два пути:
Имеет destroyBatch (), который отправляет массив идентификаторов в вызов DELETE, а sinatra вынюхивает множественные идентификаторы и обрабатывает все удаления сразу на стороне сервера.
Иметь destroyAsync () на стороне клиента, который помещает идентификаторы в очередь и вызывает destroy () для моделей по одному в асинхронной цепной реакции, пока они не будутвсе исчезло (но вы бы увидели, что они удаляются по одному на экране с паузой между ними).
Возможно, какое-либо из этих решений кажется разумным, или я хрупкий гусьдико хлопает?
-j