为解析数据库的 $http GET 请求指定日期范围参数
Specifying date range params for $http GET request to Parse DB
以下是我向 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。但是,它仍然 returns 所有订单。
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 }
}
}
})
编辑 1: 在构建我的 get 请求时:我收到一个 400 HTTP 错误,包含以下内容:
code: 107
error: "invalid date {1.433264918052e+12}"
编辑 2(已解决): 我已经解决了这个问题。在解析参数 属性 的结构后,我了解到 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 }
}
}
})
如果有人想借此机会给出详尽的解释,我很乐意给他们答案(例如,Parse 在标准 Unix 纪元时间上使用 ISO 有什么好处?)。
您可以传递开始日期和结束日期时间戳来传递一个日期范围。尝试这样的事情。
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()
}
});
在服务器端,您可以将时间戳转换为日期对象,以将其传递给数据库存储过程或查询。
才发现问题的答案我早就贴出来了。为后代更新官方答案。
我已经解决了这个问题。在解析参数 属性 的结构后,我了解到 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 }
}
}
})
以下是我向 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。但是,它仍然 returns 所有订单。
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 }
}
}
})
编辑 1: 在构建我的 get 请求时:我收到一个 400 HTTP 错误,包含以下内容:
code: 107
error: "invalid date {1.433264918052e+12}"
编辑 2(已解决): 我已经解决了这个问题。在解析参数 属性 的结构后,我了解到 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 }
}
}
})
如果有人想借此机会给出详尽的解释,我很乐意给他们答案(例如,Parse 在标准 Unix 纪元时间上使用 ISO 有什么好处?)。
您可以传递开始日期和结束日期时间戳来传递一个日期范围。尝试这样的事情。
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()
}
});
在服务器端,您可以将时间戳转换为日期对象,以将其传递给数据库存储过程或查询。
才发现问题的答案我早就贴出来了。为后代更新官方答案。
我已经解决了这个问题。在解析参数 属性 的结构后,我了解到 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 }
}
}
})