首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过嵌套指针查询?

通过嵌套指针查询?
EN

Stack Overflow用户
提问于 2014-07-07 02:03:36
回答 1查看 763关注 0票数 0

我正在用Parse后端重写Node/Express中的“宿舍的Yelp”web应用程序()。

由于我非常熟悉SQL数据库,所以我将数据组织成四个表,每个表包含一对多的指针:

代码语言:javascript
复制
Rooms
Halls
Clusters
Campuses

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

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

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

代码语言:javascript
复制
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);

所以我想做校园搜索很简单

代码语言:javascript
复制
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社区:我应该做什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-07 08:53:53

用单数名称命名类更有意义,Campus而不是Campuses。所以,我会用单数的名字。

您的模型是一个树结构,它有一些模式。您使用的方法是保留父引用,这很简单,但需要对子树进行多个查询,正如您意识到的那样。由于Parse使用的是MongoDB,所以可以检查MongoDB的用例和模型模式,例如产品目录模型树结构

祖先图案阵列为例,这里有类似于{_id: "Room1", ancestors: [pointerToAHall, pointerToACluster, pointerToACampus], parrent: pointerToAHall}的东西。

您可以找到ancestors数组包含校园的房间:

代码语言:javascript
复制
var query = new Parse.Query("Room");
query.equalTo("ancestors", aCampusObject)

注意,equalTo知道ancestors是一个数组。您可能需要检查Parse文档中的数组查询

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24602151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档