Я следовал вашему коду и протестировал следующий код на моей стороне:
req.azureMobile.tables('TodoItem')
.delete(req.azureMobile.tables('TodoItem')
.where(function(id){return this.id ==id;},req.query.id))
.then(results=>{
//res.json(results);
res.status(201).send(results);
})
.catch(next);
Прежде чем я протестировал приведенный выше код, я включил ведение журнала диагностики для своего веб-приложения и перейдите в раздел "МОНИТОРИНГ> Поток журналов" моего веб-приложения на портале Azure, чтобы просмотреть ведение журнала в реальном времени.
После отправки запроса на удаление я мог видеть журнал, похожий на этот:
2018-07-03T08: 59: 48.551Z - [35msilly [39m: выполнение оператора SQL SELECT * FROM [dbo]. [TodoItem] WHERE ([id] = @ p1); УДАЛИТЬ ИЗ [[ dbo]. [TodoItem] WHERE ([id] = @ p1); SELECT @@ rowcount AS recordsActed ; с параметрами [{"name": "p1", "pos": 1, "value": "123"}]
Проще говоря, я просто захожу в «МОБИЛЬНЫЕ> Простые таблицы» службы приложений и обнаруживаю, что моя предыдущая удаленная запись полностью удалена. Также я попытался извлечь предыдущую запись через браузер, добавив дополнительный параметр запроса __includeDeleted
следующим образом:
https://{your-mobile-app}.azurewebsites.net/tables/todoitem/{record-id}?ZUMO-API-VERSION=2.0.0&__includeDeleted=true
Примечание: Если запись не существует, я получу код состояния 404 и следующее текстовое сообщение:
{
"error": "The item does not exist"
}
Из моего тестирования вышеописанный процесс также может быть реализован следующим образом:
req.azureMobile.tables('TodoItem')
.delete({id:req.query.id})
.then(results=>{
//res.json(results);
res.status(201).send(results);
});
В моем тестировании описанные выше операции удаления полностью удаляли запись, вместо того, чтобы установить для поля deleted
значение true, и если запись не завершится, вы получите ошибку 404.
Более того, я проверил, что мы можем использовать execute (оператор) для выполнения пользовательского оператора SQL без исключения, даже если запись не существует. Вот фрагмент кода, вы можете сослаться на него:
var query = {
sql: 'UPDATE TodoItem SET DELETED=1 where id=@id',
parameters: [
{name:'id',value:req.query.id}
]
};
req.azureMobile.data.execute(query).then(function (results) {
res.json(results);
});