如何在解析中对对象数组运行查询
How to run query on array of objects in parse
我有一个关于用户位置解析的USER_LOCATION表。我将当前位置保存在单独的列中,并将其先前的位置保存在单独的列中。当前位置列为地理点类型,而先前位置列为数组类型。放置在先前位置的对象如下所示:
[
{"location":{"__type":"GeoPoint","latitude":12.3456789,"longitude":12.3456789},"time":"Fri, 22 Jan 2016 11:10:14 GMT"},
{"location":{"__type":"GeoPoint","latitude":12.3456789,"longitude":12.3456789},"time":"Thu, 21 Jan 2016 11:10:14 GMT"},
{"location":{"__type":"GeoPoint","latitude":12.3456789,"longitude":12.3456789},"time":"Wed, 20 Jan 2016 11:10:14 GMT"},
{"location":{"__type":"GeoPoint","latitude":12.3456789,"longitude":12.3456789},"time":"Sat, 23 Jan 2016 11:10:14 GMT"}
]
现在,我想显示所选用户在选定时间的位置的数据。 例如,如果用户选择了用户 A 并选择了 1 月 23 日的日期,那么我必须显示用户 A 在 1 月 23 日的"纬度":12.3456789,"经度":12.3456789。如何查询?
一个非常昂贵的选项是,我获取具有选定用户的表的所有对象,然后我循环数组对象并将时间与选定的值匹配,例如:
var matQuery = new Parse.Query(Parse.Object.extend("UserLocations"));
matQuery.containedIn("user_id",request.param.userIds);
matQuery.find({
success: function(matchArray){
for(var i=0;i<matchArray.length;i++){
var prevLocArray = matchArray[i].get("PREV_LOCATION");
for(var j=0;<prevLocArray.length;j++){
var obj = prevLocArray[j];
//match obj.time with provided time
}
}
},error: function(err){
response.success(err.message);
}
});
谁能指导我如何使用查询来做到这一点?
我认为
问题是:"如果我的_User有一系列位置/时间,我如何找到一组用户在特定时间的位置?
发布的代码与您获得的数据结构大致相同。 Parse.Query
无法查询数组数据,除非请求是否存在完全匹配的元素。
两种选择是:(a)使用执行相同工作的云函数稍微改进它,但不浪费返回任何额外数据的网络工作,或者(b)通过创建"PrevLocation"类来规范化数据:
PrevLocation: "user" (pointer to _User), "date" (Date), "location" (GeoPoint)
查询用户是否在一组用户中,以及满足某个时间窗口(在目标日期的开始和结束之间)的日期。 这将在平台允许的范围内快速运行,并仅返回您寻找的数据。
请记住,如果需要,还可以include("user")
该查询以获取完整的用户对象。
相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 在Javascript中转换对象数组
- 在JavaScript中通过索引从对象数组中获取值
- Backbone虹吸以获取对象数组
- 如何在DataTables 2.1中迭代对象数组
- Javascript-根据赋值顺序,按键合并对象数组
- 将事件附加到对象/数组
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript在数组中获取对象数组中键的所有不同值
- 在对象数组中查找多个值的d3范围
- Undercore.js获取对象数组中键对象的值
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 如何通过json对象数组为嵌套对象赋值
- 如何循环通过2个对象数组并通过匹配id进行合并
- 为对象数组创建列表项
- 如何使用javascript合并两个对象数组
- JSON到对象数组,并向每个对象添加项
- JavaScript:从对象数组中获取唯一值及其计数
- 按不同项目对对象数组进行排序