2017-11-01 8 views
2

배달 객체를 업로드하는 응용 프로그램에 업로드 버튼이 있지만 웹 객체에 도착하면 전달 객체가 null 인 경우가 있습니다.이 LINQ 코드를 루프로 변환하십시오 (또는이 객체가 때때로 null 인 이유)

전체 코드는 아래에 있습니다. 그러나이 비트는 제가이 문제를 푸는 데 문제가 있습니다. 나는 이것이 LINQ 코드라고 믿는다. 그래서 아무도 내가 루프로 다시 변환하도록 도와 줄 수있다. 왜 deliveries 객체가 null일지도 모르겠다.

var deliveries = Enumerable.From(results).Select(function (r) { 
    r.transactionDate = r.transactionDate.format("YYYY-MM-DD HH:mm:ss"); 
    return r; 
}).ToArray(); 

전체 코드 :

me.uploadClicked = function() { 
playClicked(); 
coreViewModel.busyMessage("Processing delivery data..."); 

deliveryRepository.GetTodaysDeliveries(function (results) { 
    var deliveries = Enumerable.From(results).Select(function (r) { 
     r.transactionDate = r.transactionDate.format("YYYY-MM-DD HH:mm:ss"); 
     return r; 
    }).ToArray(); 


    window.setTimeout(function() { 
     coreViewModel.busyMessage("Uploading delivery data..."); 

     var objUploadDeliveries = Object.create({ 
      objStore: Object.create({ 
       storeTypeID: coreViewModel.store.storeTypeID(), 
       storeID: coreViewModel.store.id() 
      }), 
      objDeliveries: deliveries 
     }); 

     var comm = new URLHelper(); 
     var xhr = $.ajax({ 
      url: comm.hosturl() + "UploadDelivery", 
      type: 'POST', 
      beforeSend: function(xh) { xh.setRequestHeader("token", coreViewModel.token); }, 
      data: objUploadDeliveries, 
      dataType: 'json', 

      success: function (result) { 
       if (!result) { 
        playError(); 
        return; 
       } 
       playUploadComplete(); 
      }, 
      error: function (x, e) { 
       playError(); 
       errorHandler(x, e); 
       }, 
      timeout: 60000 
     }); 
    }, 20000); 
}); 
} 

GetTodaysDeliveries 함수는 다음과 같다 : 다음과 같이

GetTodaysDeliveries: function (callback) { 
    deliverysDatabase.GetDeliveries(function (results) { 
     $.each(results, function (index, result) { 
      result.transactionDate = moment(result.transactionDate).utc(); 
     }); 

     var todaysResults = Enumerable.From(results).Where(function (r) { 
      return moment().isSame(r.transactionDate, 'day'); 
     }).ToArray(); 

     return callback(todaysResults); 
    }); 
} 

그 내부 deliverydatabase.GetDeliveries 함수이다

GetDeliveries: function (callback) { 
    var me = this; 

    db.transaction(
     function (context) { 
      context.executeSql("SELECT barcode, titleName, delivered, expected, isNews, supplier, supplierId, transactionDate FROM delivery ORDER BY titlename", [], function (context, result) { 
       if (result.rows.length > 0) { 
        var results = []; 
        for (var i = 0; i < result.rows.length; i++) { 
         results.push(result.rows.item(i)); 
        } 

        return callback(results); 
       } else { 
        return callback([]); 
       } 
      }, me.ErrorHandler); 
     } 
     , me.ErrorHandler); 
} 

답변

3

너의 대구 e snippet은 결과에서 배열을 가져 와서 날짜를 형식화 한 다음 배열을 반환합니다. 결과물은 결과와 동일하지만 날짜 형식이 지정됩니다. delivarables가 null 인 경우 결과는 비어 있거나 null이어야합니다. 당신이이 unlinqd 코드 루프

console.log("test"); 

를 삽입하여이를 확인할 나는이 그것을 정리할 희망

var deliveries = []; 
results.forEach(function(item) 
{ 
    var item.transactionDate = item.transactionDate.format("YYYY-MM-DD HH:mm:ss"); 
    deliveries.push(item); 
}; 

을 니펫을 할 수 있습니다.

+0

그래서 더 자세히 살펴보고 왜 결과가 비어있는 지 알아 내야합니다. unLINQed 코드가 정말 도움이되었습니다. 감사합니다. – RussAwesome