0

AzureでSQLデータベースを操作しようとしているAndroidアプリケーションでAzure Mobile Servicesを使用しています。モバイル サービス内でサーバー側の 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 に答える