2015-06-02 134 views
0

以下是我對Parse.com的RESTful API發出的GET請求。我想構建請求以僅檢索今天收到的記錄

$http({ 
    method: "GET", 
    url: "https://api.parse.com/1/classes/Order", 
    headers: { 
     "X-Parse-Application-Id": PARSE_CREDENTIALS.APP_ID, 
     "X-Parse-REST-API-Key": PARSE_CREDENTIALS.REST_API_KEY, 
     "Content-Type": "application/json" 
    }, 
    params: { 
     // WHAT DO I PUT HERE? 
     createdAt: /* greater than 8am today, less than or equal to current time */ 
    } 
}) 

從關於查詢約束的Parse API文檔閱讀後,我修改了$ http GET。但是,它仍會返回所有訂單。

var startDate = new Date(); 
var currentTime = new Date().getTime(); 
startDate.setHours(8);//set time to 8 am. 
$http({ method: "GET", 
    url: "https://api.parse.com/1/classes/Order", 
    headers: { 
     "X-Parse-Application-Id": PARSE_CREDENTIALS.APP_ID, 
     "X-Parse-REST-API-Key": PARSE_CREDENTIALS.REST_API_KEY, 
     "Content-Type": "application/json" 
    }, 
    params: { 
     where: { 
      "createdAt": { "$gte": startDate, "$lte": currentTime } 
     } 
    } 
}) 

EDIT 1:一旦構建我的get請求像這樣:我收到400的HTTP錯誤,包含以下:

code: 107 
error: "invalid date {1.433264918052e+12}" 

EDIT 2(解決):我已經解決問題。解析了params屬性的結構之後,我瞭解到Parse API需要ISO格式的DateTime。所以,我的最終版本是這樣的:

var startDate = new Date().toISOString(); 
var currentTime = new Date().getTime().toISOString(); 
startDate.setHours(8);//set time to 8 am. 
var deferred = $q.defer(); 
$http({ method: "GET", 
    url: "https://api.parse.com/1/classes/Order", 
    headers: { 
     "X-Parse-Application-Id": PARSE_CREDENTIALS.APP_ID, 
     "X-Parse-REST-API-Key": PARSE_CREDENTIALS.REST_API_KEY, 
     "Content-Type": "application/json" 
    }, 
    params: { 
     where: { 
      "createdAt": { "$gte": startDate, "$lte": currentTime } 
     } 
    } 
}) 

如果有人想利用這個機會,並給予詳盡的解釋,我會很樂意給他們的答案(如什麼好處是有解析使用ISO在標準的Unix紀元時間?)。

+1

對於那些不熟悉,對於這個REST端點的文件是在這裏:https://parse.com/docs/rest/guide#queries –

+0

@ShotgunNinja所以我使用查詢約束添加參數。我將添加params來顯示我所做的。但它仍然不起作用... –

回答

0

意識到我很久以前在問題中發佈了答案。用後人的正式答案更新。

我已經解決了這個問題。解析了params屬性的結構之後,我瞭解到Parse API需要ISO格式的DateTime。所以,我的最終版本是這樣的:

var startDate = new Date().toISOString(); 
var currentTime = new Date().getTime().toISOString(); 
startDate.setHours(8);//set time to 8 am. 
var deferred = $q.defer(); 
$http({ method: "GET", 
    url: "https://api.parse.com/1/classes/Order", 
    headers: { 
     "X-Parse-Application-Id": PARSE_CREDENTIALS.APP_ID, 
     "X-Parse-REST-API-Key": PARSE_CREDENTIALS.REST_API_KEY, 
     "Content-Type": "application/json" 
    }, 
    params: { 
     where: { 
      "createdAt": { "$gte": startDate, "$lte": currentTime } 
     } 
    } 
}) 
1

您可以傳遞from和date日期時間戳來傳遞一個日期範圍。嘗試這樣的事情。

var startDate = new Date(); 
startDate.setHours(8);//set time to 8 am. 

$http({ 
    method: "GET", 
    url: "https://api.parse.com/1/classes/Order", 
    headers: { 
     "X-Parse-Application-Id": PARSE_CREDENTIALS.APP_ID, 
     "X-Parse-REST-API-Key": PARSE_CREDENTIALS.REST_API_KEY, 
     "Content-Type": "application/json" 
    }, 
    params: { 
     createdFrom: startDate.getTime(), 
     createdTo: new Date().getTime() 
    } 
}); 

在服務器端,您可以將時間戳轉換爲日期對象,以將它傳遞給數據庫存儲過程或查詢。

+0

這是調用雲功能的好建議,但OP詢問REST api,這將要求約束如下所述進行指定:https://parse.com/ docs/rest/guide#queries – danh

+0

我不知道這個api。 Thx教育我:) – ShankarSangoli