Azure插入脚本不起作用
我在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();
}
的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' });
}
}
});
}
当我用这个,我得到这个错误:在未处理 消息 Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException:类型Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException“未处理的异常出现在mscorlib.dll 其他信息:错误:内部服务器错误 – user861059 2013-05-08 22:12:00
请检查门户网站上的日志,可能有关于发生了什么的一些信息。 – carlosfigueira 2013-05-08 22:16:45
确定我的错误是这样的:脚本'/table/UserTransactions.insert.js'错误。错误:[Microsoft] [SQL Server Native Client 10.0] [SQL Server]无效的对象名称'tc.UserTable'。现在,表UserTable不在模式tc中,而在模式dbo中。有没有一种方法可以引用其他模式中的表格?我尝试写dbo.UserTable,但我得到了另一个错误。 – user861059 2013-05-08 22:24:36
该代码的工作框架是什么?如果不知道这一点,不可能帮助你。另外,请将您的脚本包含在您的问题中,而不是链接。这会增加有人帮助你的几率。 – Jaxidian 2013-05-08 16:08:44
我正在使用移动服务的C#windows应用程序将数据输入到表中。插入脚本位于Azure脚本中。不知道我是否正在解释自己。 – user861059 2013-05-08 16:31:55
为什么不使用触发器来达到这个目的?您可以使用“替代”触发器在保存之前替换值。 – 2013-05-08 19:56:20