次のコードがあります。
C# コードはデバイス、Windows Phone 8 にあります。
IMobileServiceTable<Subscription> SubsciptionsTable = App.MobileService.GetTable<Subscription>();
SubscriptionItemServerItem = await SubsciptionsTable.Where(subs => subs.userId == App.UserInfromationID && subs.ContentID == holdElement.NewMessages).ToListAsync();//only want items that are something
await SubsciptionsTable.DeleteAsync(SubscriptionItemServerItem[0]);
Azure MobileService に削除要求を送信する場所。ここに次のスクリプトがあります。
function del(id, user, request) {
var TableA_Table = tables.getTable('subscription');
//console.log("About to Delete Subscription:", id);
TableA_Table.where({ userId: user.userId, id: id})
.read ({ success: DeleteItem });
function DeleteItem(results)
{
if(results > 0){
console.log("Reached HERE", id);
request.execute();
}
}
}
このスクリプトを使用して、ユーザーが要求しているものを削除できることを確認しています。
すべてが機能し、私は
request.execute();
しかし、その後ハングし、電話で待機し、タイムアウトします。また、アイテムはサーバー上でも削除されません。
私は何をすべきか?また、エラーの原因は何ですか?
解決
スクリプトでまだエラーが見つかりませんでした。しかし、私が得た回答を微調整することで、回答済みとしてマークしたことで、解決策が次のようになることがわかりました。
function del(id, user, request)
{
var table = tables.getTable('subscription');
table.where({ id: id }).read({
success: function (results)
{
if (results.length > 0)
{
//console.log("log existingItem",results[0].userId);
//console.log("log user",user.userId);
if (results[0].userId == user.userId)
{
request.execute();
}
else
{
// console.log("Invalid user");
request.respond(statusCodes.BAD_REQUEST, "Invalid user");
}
}
else
{
// console.log("NOT_FOUND");
request.respond(statusCodes.NOT_FOUND);
}
}, error: function () {
//console.log("NOT_FOUND_error");
request.respond(statusCodes.NOT_FOUND);
}
});
}