如果没有记录存在其他更新脚本,则在azure脚本插入时出现异常

时间:2014-01-13 20:13:14

标签: c# windows-phone-8 azure-mobile-services

我的插入脚本:

function insert(item, user, request) {
item.userId= user.userId;


var table = tables.getTable('mytabble');
table.where({ 
   name: item.name
}).read({
   success: upsertItem
});

function upsertItem(existingItems) {
    if (existingItems.length === 0) {
        request.execute();
    } else {
    item.id = existingItems[0].id;
      table.update(item, {
        success: function(updatedItem) {
            request.respond(200, updatedItem)
        }
      });
    }
 }

}

mytable的:

public class myTabble
{
    public string Id { get; set; }

    [JsonProperty(PropertyName = "name")]
    public string name { get; set; }

    [JsonProperty(PropertyName = "age")]
    public int age { get; set; }

    [JsonProperty(PropertyName = "fname")]
    public string fname { get; set; }
 }

我的插入功能:

private async void InsertTodoItem(myTabble todoItem)
    {


            await todoTable.InsertAsync(todoItem);
            items.Add(todoItem);



    }

更新按钮功能

private void Save_Button_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var name1 = name.Text;
                var age1 = Convert.ToInt32(age.Text);
                var fname1 = fname.Text;

                var todoItem = new myTabble { name = name1, age = age1, fname = fname1 };
                InsertTodoItem(todoItem);
                //NavigationService.Navigate(new Uri("/Page2.xaml", UriKind.Relative));
            }
            catch
            {
                MessageBox.Show("Invalid input");
            }

        }

当我尝试为以前存在的名称插入信息时它已正确更新,但同时我的插入功能出现异常。

1 个答案:

答案 0 :(得分:0)

由于异常来自items.add(),您应该验证该项目是否已在items集合中。这样的事情对你有用:

if (items.IndexOf(item) == -1)
{
    items.Add(todoItem);  
} 

根据您要更改的内容,您可能需要删除并阅读从集合中添加项目。