解析查询Javascript - 关于关系数据的“包含”

时间:2014-08-04 15:11:32

标签: javascript parsing

考虑我有一个对象A,它有一个指向对象B的指针。 对象B中有一个属性“title”。 我想在对象A上查询一个字符串,该字符串包含在对象B的标题中。 像

这样的东西
var query1 = new Parse.Query("objectA");
query1.include("objectB");
query1.contains("objectB.title", anyQuery);
query.find({
          success: function(obj){
     },
     error: function(obj, error) {    
     }
});
这里的“anyQuery”可以是用户在搜索字段中输入的任何字符串。考虑用户输入“Mary”作为查询我应该获得与objectB相关的所有objectA,其中标题包含“Mary”。例如“Maryland”。 基本上简单来说,我想在解析中对相关数据执行类似的查询。

修改

感谢您的回复。我在https://parse.com/docs/js_guide#queries-relational阅读了文档。我想提出我的问题。我想使用matchesQuery形成的查询或条件我在我的代码中所做的事情如下,但我没有得到结果:

if(filterQuery) {
            var Organization = Parse.Object.extend("Organization");

            //LIKE QUERIES
            var nameLikeQuery = new Parse.Query(Parse.User);
            nameLikeQuery.contains("nameLc", filterQuery);  

            var phoneLikeQuery = new Parse.Query(Parse.User);
            phoneLikeQuery.contains("phone", filterQuery);      

            var emailLikeQuery = new Parse.Query(Parse.User);
            emailLikeQuery.contains("username", filterQuery);

            var organizationMatchQuery = new Parse.Query(Organization);         
            organizationMatchQuery.contains("titleLc", filterQuery);    

            var userOrganizationQuery = new Parse.Query(Parse.User);
            userOrganizationQuery.matchesQuery("organization", organizationMatchQuery);

            var userQuery1 = new Parse.Query.or(nameLikeQuery, phoneLikeQuery);
            var userQuery2 = new Parse.Query.or(emailLikeQuery, userQuery1);

            userQuery = new Parse.Query.or(userQuery2, userOrganizationQuery);
        } else {
            userQuery = new Parse.Query(Parse.User);
        }       
        if(type != "ALL") {
            userQuery.equalTo("userType", type);
        }
        userQuery.include("organization");
        userQuery.descending("createdAt");
        userQuery.find();

1 个答案:

答案 0 :(得分:0)

正如Chris所说,这种情况在这里的关系查询中有详细记录:

https://parse.com/docs/js_guide#queries-relational

因此,根据您的特殊需求,它看起来像:

var objectBQuery = new Parse.Query("objectB");
objectBQuery.contains("title", anyString);
var objectAQuery = new Parse.Query("objectA");
objectAQuery.matchesQuery("objectB", objectBQuery);
objectAQuery.find().then(function (list) {
    // use list
}, function (error) {
    console.log(error);
});