我正在用Parse后端重写Node/Express中的“宿舍的Yelp”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社区:我应该做什么呢?
发布于 2014-07-07 08:53:53
用单数名称命名类更有意义,Campus而不是Campuses。所以,我会用单数的名字。
您的模型是一个树结构,它有一些模式。您使用的方法是保留父引用,这很简单,但需要对子树进行多个查询,正如您意识到的那样。由于Parse使用的是MongoDB,所以可以检查MongoDB的用例和模型模式,例如产品目录和模型树结构。
以祖先图案阵列为例,这里有类似于{_id: "Room1", ancestors: [pointerToAHall, pointerToACluster, pointerToACampus], parrent: pointerToAHall}的东西。
您可以找到ancestors数组包含校园的房间:
var query = new Parse.Query("Room");
query.equalTo("ancestors", aCampusObject)注意,equalTo知道ancestors是一个数组。您可能需要检查Parse文档中的数组查询。
https://stackoverflow.com/questions/24602151
复制相似问题