更新Azure SQL数据库故障

时间:2015-03-25 20:36:22

标签: android azure azure-mobile-services serverside-javascript server-side-scripting

我正在使用Azure移动服务和Android应用程序,我试图在Azure中使用SQL数据库。我在移动服务中使用服务器端JavaScript函数来处理数据的插入和更新。插入新数据可以正常运行,但我无法使用该功能更新任何行。

我收到的错误是:409 - 错误:无法插入该项目,因为具有该ID的项目已存在。 似乎它试图插入而不是更新,但我无法找出解决方案。非常感谢帮助! 这是来自Azure的服务器端脚本:

function insert(item, user, request) {
  var table = tables.getTable('Reviews');
  table.where({
    text: item.id
  }).read({
    success: upsertItem
    });

  function upsertItem(existingItems) {
    if (existingItems.length == 0) {
        item.numReviews = 1;
        item.rating = item.reviews;
        request.execute();
    } else {
        item.id = existingItems[0].id;
        item.numReviews = existingItems[0].numReviews + 1;
        var average = existingItems[0].reviews / item.numReviews;
        item.reviews = existingItems[0].reviews + item.reviews;
        item.rating = average;
        table.update(item, {
            success: function(updatedItem) {
                request.respond(200, updatedItem)
            }
        });
    }
  }
}    

1 个答案:

答案 0 :(得分:0)

对于初始查询,您希望通过id字段进行查询:

table.where({
    id: item.id
}).read({
    success: upsertItem
});