Parse.com相当于sql查询

时间:2015-07-08 05:49:09

标签: android sql join parse-platform nosql

我想知道如何在解析时实现以下SQL查询,

e.g。假设我们的DB中有2个表/类:User,Profile,括号中的示例值。

User
- email(tt@tt.com)
- Name(tt)

Profile
 -email(tt@tt.com)
 -age(23)

Sql query,
select User.email,User.name,Profile.age from User 
JOIN Profile on User.email = Profile.email
Where User.email = 'tt@tt.com'

结果记录集为"tt@tt.com,tt,23e"。 现在,如果我想用Parse做更好的事情,或者更好,我怎么能实现这个? 我读到了这些结构,但我不知道它们是否适用于这种情况以及如何使用它们。我在Android上开发 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果您在班级_Users上有指向Profile的指针,那么最佳方法就是:

var Profile = Parse.Object.extend("Profile");
var query = new Parse.Query(Profile);
query.equalTo("email", request.params.email);
return query.first().then(null, function(error) {
    return Parse.Promise.error('Sorry, this profile was not found.');
}).then(function(profile) {
    profile.get('_User').fetch().then(function(user) {  
        console.log(
            'name : ' + user.get('name') + ' ' + 
            'age : ' + profile.get('age')
        );
    });
});

profile.get('_User')注意您的指针名称可能会更改,而不是_User

答案 1 :(得分:0)

试试这个解决方案。 在User类中,创建指向配置文件的指针。然后,您可以从User类查询以获取Profile。

ParseQuery<User> parseQuery = ParseQuery.getQuery("User");
parseQuery.whereEqualsTo("emai", "youremail@mail.com");

parseQuery.getFirstInBackground(new GetCallback<User>() {
  public void done(User user, ParseException e) {
    if (e != null) {
      Log.d("score", "The getFirst request failed.");
      return;
    } 
    Profile profile = (Profile) user.get("profile");
  }
});