Azure插入脚本无法正常工作

时间:2013-05-08 15:46:10

标签: azure azure-mobile-services

我在Azure数据库中有两个表,我正在尝试添加一个脚本,用户每次在表Transactions中输入内容时都可以将数据插入到一个表字段中。这些表位于不同的模式中,但位于同一个数据库中。

当在数据库事务中输入一行时,我需要检查该行中的用户帐户是否在“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();
}

1 个答案:

答案 0 :(得分:1)

userTable获得的tables.getTable对象为您提供了对象的引用。它没有您尝试访问的BalanceUserAccount属性。您需要做的是首先查询 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' });
            }
        }
    });
}