2017-03-20 13 views
0

現在iOSのAzureモバイルサービスSDKを使用しているiOSデベロッパー&です。Azureテーブルインサートの入力値の増分

私の場合、私は各ユーザーにuniqueidと 'todomytable'という表の 'my​​id'と言っています。 todomytable.jsファイルで、myid値のチェックを行っています。デバイスからの 'my​​id'の値がテーブルに格納された値よりも小さい場合、テーブルの値が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(); 
     }); 
}); 

の私のロジックがある。しかし問題は、そのテーブルには、私は誰がどのようにお勧めできます

{Error Domain=NSURLErrorDomain Code=-1001 "The request timed out."} 

以下のようなエラーをネットワーク要求の時間を取得していますモバイルログに更新&を取得していないですこの問題を解決しますか?テーブルに「myid」をインクリメントした順番で格納する必要があります。私はNode.jsを新しくしています。だから、もし私が愚かな間違いをしているなら、ごめんなさい。

+1

あなたの質問にMobileServiceClientの初期化ルーチンを追加してください。 –

答えて

2

ある時点では、拒否を約束する原因となる例外が発生する可能性があります。約束された例外ハンドラが定義されていないと仮定すると、例外は「飲み込まれる」ことになります。次のことを試してみてください。

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は約束を返します - モバイルアプリの実行時にも拒否された約束に
  • context.executeを扱うように、私たちはinsert機能からこれを戻ってきています約束を返す。約束が適切に「連鎖」されるようにこれを返すようにします。

関連する問題