我正在使用Parse.com(JS)作为我当前的项目。 SQL中的一个简单事情就是让我疯狂地使用Parse.com,我已经阅读了文档,但我必须说我无法正确理解"对象"方法
无论如何,我需要做的是应用多个" OR"查询。让我们说我有三张桌子:
UserObject(uid, username, password)
ResponseObject(rid, _userid, _questionid, response) // not used here
QuestionObject(qid, questionTitle, _userid)
_userid are pointers to the User table
_questionid is a pointer to the Question table
我首先需要选择以" mat"开头的用户在User表中,我这样做:
var UserObject = Parse.Object.extend("UserObject");
var query = new Parse.Query(UserObject);
query. startsWith("username", "mat");\
query.find({
success: function(results) { etc...
在结果中,我现在有一个我需要的用户数组。现在我需要在Question表中选择_userid匹配此数组的所有问题。我知道我可以使用Parse.Query.or,如下所示:
var QuestionObject = Parse.Object.extend("QuestionObject");
var query1 = new Parse.Query(QuestionObject);
query1.equalTo("userid", results[0].get('uid'));
var query2 = new Parse.Query(QuestionObject);
query2.equalTo("userid", results[1].get('uid'));
var mainQuery = new Parse.Query.or(query1, query2);
mainQuery.find({...})
但我不知道结果有多大,如果我有50个用户,我不想使用Parse.Query.or 50次!所以我确信有一个简单的解决方案,但我被卡住了!我想直接传递"结果"到新的查询或类似的东西!
答案 0 :(得分:1)
无需Parse.Query.or()
。 Parse.Query
提供containedIn()
,如果对象属性的值是某些值数组中的一个,它将匹配。
(问题是userId
对象上的Question
是一个指针。这是一个很好的选择,但名称“userId”是一个令人困惑的选择。它是一个id还是一个对象?我希望一个对象,这个答案的其余部分假定为)。
// results is an array of Parse.User from a prior query
var QuestionObject = Parse.Object.extend("QuestionObject");
var query = new Parse.Query(QuestionObject);
query.containedIn("userid", results);
query.find(...)
更全面,有承诺......
var userQuery = new Parse.Query("UserObject");
userQuery.startsWith("username", "mat");
userQuery.find().then(function(userObjects) {
var query = new Parse.Query("QuestionObject");
query.containedIn("userid", userObjects);
return query.find();
}).then(function(questions) {
// questions are Questions who's users' username begins with 'mat'
});