我正在使用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)
}
});
}
}
}
答案 0 :(得分:0)
对于初始查询,您希望通过id字段进行查询:
table.where({
id: item.id
}).read({
success: upsertItem
});