1

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

当在数据库 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();
}
4

1 回答 1

1

userTable您从中获取的对象tables.getTable为您提供了对表对象的引用。它没有您尝试访问的 aBalance或 a属性。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' });
            }
        }
    });
}
于 2013-05-08T21:46:50.133 回答