Ошибка обновления базы данных SQL Azure

Я использую мобильные службы Azure с приложением для Android, которое я пытаюсь заставить работать с базой данных SQL в Azure. Я использую функцию JavaScript на стороне сервера в мобильных службах для обработки вставки и обновления данных. Вставка новых данных работает правильно, однако я не могу обновить ни одну строку с помощью этой функции.

Я получил следующую ошибку: 409 - ошибка: не удалось вставить элемент, поскольку элемент с таким идентификатором уже существует. Вроде как пытается вставить вместо обновления, но не могу найти решение. Помощь очень ценится! Вот мой серверный скрипт от 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)
            }
        });
    }
  }
}    

comment
Дубликат stackoverflow.com/questions/29266012/   -  person Eric Hedstrom    schedule 26.03.2015


Ответы (1)


Для вашего первоначального запроса вы хотите запросить по полю id:

table.where({
    id: item.id
}).read({
    success: upsertItem
});
person Eric Hedstrom    schedule 26.03.2015