Flask-restless хочет, чтобы фильтр был передан в строке запроса, а не как часть данных.Вот почему он удаляет все ваши данные.Это не захват фильтра вообще.
Как только это исправлено, у вас есть дополнительная проблема в самом фильтре.Вы отправляете это в качестве фильтра:
[
{'name': 'id', 'op': 'equals', 'val': 1},
{'name': 'id', 'op': 'equals', 'val': 2}
]
Запрос, не вызывающий проблем с колбами, считает что-то совпадением, только если все фильтры совпадают.Другими словами, он объединяет их всех с помощью и:
delete from message where id = 1 and id = 2
Вам нужно будет либо указать флакону, что вам нужен 'или'
[
{ "or": [
{"name": "id", "op": "equals", "val": 1},
{"name": "id", "op": "equals", "val": 2}
] }
]
, либо изменить свойоператор фильтра в 'in':
[ {"name": "id", "op": "in", "val": [1, 2] } ]
Попробуйте изменить свой угловой код на (обратите внимание на изменение данных в параметры):
$http({
method : 'DELETE',
headers: {'X-CSRFToken' : csrf },
url : '/api/tbl_messages',
params: { q : JSON.stringify({filters:[{or: create_filters}]}) }
})
Или-- может быть немного прощеследовать - смените оператора на 'in', и вы можете избавиться от forEach:
$http({
method : 'DELETE',
headers: {'X-CSRFToken' : csrf },
url : '/api/tbl_messages',
params: { q : JSON.stringify({filters:[{name:'id', op:'in', val: $scope.deleteMessage}]}) }
})