将解析查询结果推送到数组中:JavaScript
我需要绘制一个由Parse返回的查询结果图。用户将选择ToDates,然后我将创建这两个日期之间的日期数组,然后我将该数组传递给解析查询。 我的代码如下:将解析查询结果推送到数组中:JavaScript,javascript,parse-platform,Javascript,Parse Platform,我需要绘制一个由Parse返回的查询结果图。用户将选择ToDates,然后我将创建这两个日期之间的日期数组,然后我将该数组传递给解析查询。 我的代码如下: var from = $( "#from" ).val(); //to get from value from a form var to = $( "#to" ).val(); //to get to value from a form var dates = []; //to store all dates var data = []
var from = $( "#from" ).val(); //to get from value from a form
var to = $( "#to" ).val(); //to get to value from a form
var dates = []; //to store all dates
var data = []; // to store all data returned by parse
var currentDate = from;
dates.push(from);
while (currentDate != to) {
var addOne = moment(currentDate, "YYYY-MM-DD").add(1, 'days');
currentDate = moment(addOne).format('YYYY-MM-DD');
dates.push(currentDate);
} // to get all dates present between two dates
//using for loop to get data from parse
for(var j = 0; j < dates.length; j++)
{
var dateStart = moment(dates[j], "YYYY-MM-DD").startOf('day'); //to get start of day
var dateEnd = moment(dates[j], "YYYY-MM-DD").endOf('day'); // to get end of day
var noRequests = Parse.Object.extend("Requests");
var query = new Parse.Query(noRequests);
//then I am using greaterThanOrEqualTo and lessThan to calculate number of request made onn that day
query.greaterThanOrEqualTo('createdAt', dateStart._d);
query.lessThan('createdAt', dateEnd._d);
query.count({
success: function(count) {
data.push(count);
if(data.length == dates.length)
{
//passing both array to function which will draw graph using both arrays
drawGraph(dataArray,dateArray);
}
}
});
}
但由于解析的异步性质,有时我无法正确地获得结果序列。有什么建议吗?提前感谢您。将请求放入循环总是一个坏主意。我也很惊讶,考虑到你没有从中得到任何回报,这一切都是有效的。您需要使用var=requireunderscore;但这将确保你的承诺按正确的顺序执行 这也不是启动解析请求的方法。而不是使用
var noRequests = Parse.Object.extend("Requests");
var query = new Parse.Query(noRequests);
你应使用:
var query = new Parse.Query("Request");
如果确实要循环此请求,则需要执行以下操作:
var promises = _.map(dates, function(date){
var dateStart = moment(dates[j], "YYYY-MM-DD").startOf('day'); //to get start of day
var dateEnd = moment(dates[j], "YYYY-MM-DD").endOf('day'); // to get end of day
var query = new Parse.Query("Request");
query.greaterThanOrEqualTo('createdAt', dateStart._d);
query.lessThan('createdAt', dateEnd._d);
return query.count()
.then(function(count){
data.push(count);
}, function (error){
console.error(error);
});
});
将count方法替换为get,并将其添加到字典中从success回调参数检索到的唯一标识键处,而不是在数组末尾推计数,从而失去顺序。好的,我将尝试此方法,并让您知道它是否有效。谢谢你的回复。我尝试了get方法而不是count,但它不起作用。我不知道web API,从未使用过它,因此我无法进一步帮助你。因此,阅读并努力学习。