0

我正在将 Azure 移动服务与我试图在 Azure 中使用 SQL 数据库的 android 应用程序一起使用。我在移动服务中使用服务器端 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)
            }
        });
    }
  }
}    
4

1 回答 1

0

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

table.where({
    id: item.id
}).read({
    success: upsertItem
});
于 2015-03-26T01:36:45.080 回答