2013-05-08 63 views
1

我在Azure數據庫中有兩個表,我試圖添加一個腳本,用戶可以在每次將某些事項輸入到表事務中時將數據插入到一個表字段中。這些表格在不同的模式中,但在同一個數據庫中。Azure插入腳本不起作用

當在數據庫事務中輸入一行時,我需要檢查行中的用戶帳號是否在表UserTable中,從UserTable中獲取記錄,然後替換字段'Balance'中的數據

我試過以下腳本,但沒有任何反應。任何關於我在做什麼的想法都是錯誤的?

function insert(item, user, request) 
{ 

var userTable = tables.getTable('UserTable'); 
var total = item.Amount + userTable.Balance; 
var data = { 
     Balance: total, 
    }; 

if(userTable.UserAccount === item.UserAccount) 
{ 
userTable.insert(data); 
} 

request.execute(); 
} 
+0

該代碼的工作框架是什麼?如果不知道這一點,不可能幫助你。另外,請將您的腳本包含在您的問題中,而不是鏈接。這會增加有人幫助你的機率。 – Jaxidian 2013-05-08 16:08:44

+0

我正在使用移動服務的C#windows應用程序將數據輸入到表中。插入腳本位於Azure腳本中。不知道我是否正在解釋自己。 – user861059 2013-05-08 16:31:55

+0

爲什麼不使用觸發器來達到這個目的?您可以使用「替代」觸發器在保存之前替換值。 – 2013-05-08 19:56:20

回答

1

userTable對象,你從tables.getTable得到讓你的表對象的引用。它沒有Balance或您嘗試訪問的UserAccount屬性。你需要做的是先將查詢的userTable,然後用結果做出更新。下面的腳本應該做類似於你需要的東西。

function insert(item, user, request) 
{ 
    var userTable = tables.getTable('UserTable'); 
    userTable.where({ UserAccount: item.UserAccount }).read({ 
     success: function(results) { 
      if (results.length === 0) { 
       // new user. can either return an error, or add 
       // new entry. Will add a new entry here. 
       userTable.insert({ Balance: item.Amount }, { 
        success: function() { 
         // insert the transaction 
         request.execute(); 
        } 
       }); 
      } else if (results.length === 1) { 
       // Found it. will update the result 
       var userAccount = results[0]; 
       var total = userAccount.Balance + item.Amount; 
       userAccount.Balance = total; 
       userTable.update(userAccount, { 
        success: function() { 
         // insert the transaction 
         request.execute(); 
        } 
       }); 
      } else { 
       // Something is wrong 
       request.respond(
        statusCodes.INTERNAL_SERVER_ERROR, 
        { error: 'multiple users with same account' }); 
      } 
     } 
    }); 
} 
+0

當我用這個,我得到這個錯誤:在未處理 消息 Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException:類型Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException「未處理的異常出現在mscorlib.dll 其他信息:錯誤:內部服務器錯誤 – user861059 2013-05-08 22:12:00

+0

請檢查門戶網站上的日誌,可能有關於發生了什麼的一些信息。 – carlosfigueira 2013-05-08 22:16:45

+0

確定我的錯誤是這樣的:腳本'/table/UserTransactions.insert.js'錯誤。錯誤:[Microsoft] [SQL Server Native Client 10.0] [SQL Server]無效的對象名稱't​​c.UserTable'。現在,表UserTable不在模式tc中,而在模式dbo中。有沒有一種方法可以引用其他模式中的表格?我嘗試寫dbo.UserTable,但我得到了另一個錯誤。 – user861059 2013-05-08 22:24:36