Parse platform 通过嵌套指针进行查询?

Parse platform 通过嵌套指针进行查询?,parse-platform,Parse Platform,我正在Node/Express中用一个解析后端(用于上下文的PHP版本)重写一个“Yelp for Dorm rooms”web应用程序 因为我非常习惯SQL数据库,所以我将数据组织到四个表中,每个表包含一对多指针: Rooms Halls Clusters Campuses 每个房间都有一个指向其大厅的指针,每个大厅都有一个指向其集群(一小群大厅)的指针,每个集群都有一个指向其校园的指针 但是,由于每个大厅/集群/校园都有自己的文化,我希望能够按每个级别进行搜索(例如,我想住在南校区或诺里斯

我正在Node/Express中用一个解析后端(用于上下文的PHP版本)重写一个“Yelp for Dorm rooms”web应用程序

因为我非常习惯SQL数据库,所以我将数据组织到四个表中,每个表包含一对多指针:

Rooms
Halls
Clusters
Campuses
每个房间都有一个指向其大厅的指针,每个大厅都有一个指向其集群(一小群大厅)的指针,每个集群都有一个指向其校园的指针

但是,由于每个大厅/集群/校园都有自己的文化,我希望能够按每个级别进行搜索(例如,我想住在南校区或诺里斯大厅)。然而,由于指针嵌套在三层深处,我在按校园搜索和返回房间时遇到了问题。我讨厌复制数据,并将集群和校园数据复制/粘贴到每个房间对象中

搜索集群很容易。我可以:

var clusterQuery = new Parse.Query("clusters");
clusterQuery.equalTo("cluster", req.params.cluster);
var hallsQuery = new Parse.Query("halls");
hallsQuery.matchesQuery("cluster", clusterQuery);
query.matchesQuery("hall", hallsQuery);
所以我觉得做校园搜索很简单

var campusQuery = new Parse.Query("campuses");
campusQuery.equalTo("cluster", req.params.campus);
var clusterQuery = new Parse.Query("clusters");
clusterQuery.matchesQuery("campus", campusQuery);
var hallsQuery = new Parse.Query("halls");
hallsQuery.matchesQuery("cluster", clusterQuery);
query.matchesQuery("hall", hallsQuery);
但当然,这太容易了

相反,我得到一个错误154:查询有太多嵌套查询


所以我要问你的问题,全能的Stackoverflow社区:我应该怎么做呢?

用单数名称命名你的班级,校园比校园更有意义。因此,我将使用单数名称

您的模型是一个树结构,并且有一些模式。您使用的方法是保留父引用,这很简单,但需要对子树进行多个查询。因为Parse使用的是MongoDB,所以您可以检查MongoDB的用例和模型模式,比如和

考虑一下您在哪里有类似于
{u id:“Room1”,祖先:[PointerToahl,pointerToACluster,PointerToaCampure],parrent:pointerToahl}

您可以找到
祖先
阵列包含校园的房间:

var query = new Parse.Query("Room");
query.equalTo("ancestors", aCampusObject)

请注意,
equalTo
知道
祖先
是一个数组。您可能需要检查解析文档是否存在错误

值得注意的是,您还可以使用
matchesQuery(“祖先”,innerQuery)
筛选其中一个
祖先
元素与子查询匹配的房间(例如
校园
上的名称搜索)。