2015-07-21 50 views
1

我使用內容爲我的移動應用程序的後端。contentful&javascript:將來只有fields.date的條目

匹配燈具存儲在內容豐富。 我要查詢的下一場比賽,但我得到了以下錯誤:

422 (Unprocessable Entity) 

我的函數來獲取下一場比賽:

function nextOpponent(){ 
     var content_Type = mainConfig.config.contentType.match // Matches 
     var order = "fields.datum"; 
     var gt = new Date().toLocaleString(); 
     console.log(gt); 
     var query = "content_type=" + content_Type + 
      "&order=" + order + 
      "&fields.datum%5Bgte%5D=" + encodeURI(gt); 

     contentful.entries(query).then(
      //success 
      function(response){ 
       $scope.nextMatch = response.data.items[0]; 
       console.log($scope.nextMatch); 
      }, 
      //error 
      function(response){ 

      } 
     ) 
    } 

回答

4

你所面臨的問題主要是因爲日期字符串正在變形。日期字符串必須遵循ISO-8601 format。您可以使用內置的JS函數Date#toISOString或通過選擇的日期格式化庫來創建這種格式化的字符串。除此之外,您可以將參數作爲對象傳遞。

下面的代碼使用生成日期的方法:

var gt = new Date().toISOString(); 

contentful.entries({ 
    content_type: content_Type, 
    order: order, 
    'fields.datum[gte]': gt 
}).then(function() { 
    // go ahead here... 
}); 

附加說明: Contentful將緩存基於該請求的URL查詢的結果。所以如果你不需要高精度的話,我會建議使用只反映當前日期或當天相應小時的時間戳。例如。 2015-07-282015-07-28T15:00

+0

當我將參數作爲對象傳遞時,過濾器不再被應用。你有什麼想法是什麼原因? – ManuKaracho

+0

傳遞字符串仍然工作「contentful.entries( 「CONTENT_TYPE =」 + mainConfig.config.contentType.match + 「&順序=」 +順序+ 「&fields.datum [GTE] =」 + GT )。然後( // success' – ManuKaracho

+0

Hm。你使用的是哪個版本?mainConfig.config.contentType.match的值是多少? – sdepold