2014-12-02 67 views
1

我想从Parse DB中通过javascript查询对象,该对象只有一个特定的关系对象。这个标准如何实现? 所以,我想这样的事情,在equalTo()作为“含有”,这不是我要找的,到目前为止我的代码,它不工作:Parse.com关系计数

var query = new Parse.Query("Item"); 
query.equalTo("relatedItems", someItem); 
query.lessThan("relatedItems", 2); 
+0

什么是列'relatedItems'的数据类型? – eth3lbert 2014-12-02 09:10:47

+0

关系是数据类型。 – test 2014-12-02 09:13:04

回答

0

似乎做解析不提供一个简单的方法来做到这一点。

没有任何其他领域,如果你知道所有的项目,那么你可以做到以下几点:

var innerQuery = new Parse.Query('Item'); 
innerQuery.containedIn('relatedItems', [all items except someItem]); 
var query = new Parse.Query('Item'); 
query.equalTo('relatedItems', someItem); 
query.doesNotMatchKeyInQuery('objectId', 'objectId', innerQuery);  
... 

否则,您可能需要获得所有记录,并做过滤。

更新

由于数据类型relation的,有没有方法可以包括有关内容到结果,你需要做的另一个查询来获取的关系的内容。

的解决方法可能add a itemCount column并保持更新每当项目关系被修改,这样做:

query.equalTo('relatedItems', someItem); 
query.equalTo('itemCount', 1); 
+1

解析API在这种情况下非常糟糕。好吧,如果我获取所有记录,如何包含关系呢?问题是,我开始通过forloop来查看记录,并且需要为每个记录执行ajax调用来获取关系,这是异步的,但我不需要去查看所有记录,我需要找到第一个匹配一个,所以我需要同步呼叫。如果我这样做了同步,它可能会冻结用户界面。这里有什么解决方案? – test 2014-12-02 15:52:33

+0

好吧,这是一场灾难,我永远不会再使用解析。但是会完成这个项目,我会接受你的答案,你做了很多研究,谢谢! – test 2014-12-03 08:22:05