使用parse.com

时间:2015-09-16 16:18:54

标签: javascript parse-platform

我正在使用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次!所以我确信有一个简单的解决方案,但我被卡住了!我想直接传递"结果"到新的查询或类似的东西!

1 个答案:

答案 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'
 });