我是iOS开发人员&目前正在iOS中使用Azure移动服务SDK。
在我的情况下,我正在为每个用户提供一个独特的说'myid'在表中说'todomytable'。在todomytable.js文件中,我正在检查myid值。如果来自设备的'myid'的值小于表中的存储值,那么我将输入值增加大于表中的早期存储值One。以下是我在todomytable.js中的逻辑
table.insert(function (context) {
context.item.userId = context.user.id;
//....
var intIncomingID = context.item.myid; //ID coming from mobile device
//Call back to get max value of 'myid' from Table
var myFunction = function( callback) {
var query = {
sql: 'select MAX(myid) from TodoItem'
};
context.data.execute(query).then(function (results) {
var objectTest = eval(JSON.stringify(results));
var tempObject = objectTest[0];
var previuosIntID = tempObject["MAX(myid)"];
callback(previuosIntID);
});
};
myFunction(function(returnValue) {
console.log("returnValue is : "+returnValue);
if (intIncomingID<=returnValue)
{
console.log('IF');
context.item.userId = context.user.id;
returnValue = returnValue+1;
context.item.myid = returnValue;
console.log("UPDATED value is : "+context.item.myid);
}
else{
context.item.myid = intIncomingID;
console.log("ITEM value is :"+intIncomingID);
}
return context.execute();
});
});
但问题是该表未获得更新&amp;在移动日志中,我收到网络请求超时错误,如下所示
{Error Domain=NSURLErrorDomain Code=-1001 "The request timed out."}
有人可以建议如何解决此问题吗?我必须在表格中按递增顺序存储'myid'。我是Node.js的新手,很抱歉如果我犯了任何愚蠢的错误。
答案 0 :(得分:2)
可能会在某个时刻发生异常导致承诺拒绝。鉴于没有定义的promise异常处理程序,异常最终被“吞噬”。请尝试以下方法:
var table = module.exports = require('azure-mobile-apps').table()
table.insert(function (context) {
context.item.userId = context.user.id;
var intIncomingID = context.item.myid; //ID coming from mobile device
var query = { sql: 'select MAX(myid) from TodoItem' };
return context.data.execute(query)
.then(function (results) {
var tempObject = results[0];
var previousIntID = tempObject["MAX(myid)"];
console.log("previous ID is : " + previousIntID);
if (intIncomingID <= previousIntID) {
context.item.myid = previousIntID + 1;
console.log("UPDATED value is : " + context.item.myid);
} else {
context.item.myid = intIncomingID;
console.log("ITEM value is :" + intIncomingID);
}
return context.execute();
});
});
需要注意的一些要点:
context.data.execute
返回一个承诺 - 我们将从insert
函数返回此消息,以便Mobile Apps运行时处理任何被拒绝的承诺context.execute
也会返回一个承诺;我们正在返回这个,以便承诺被“链接”正确希望这有帮助!