在Javascript中查询parse.com中的指针对象

时间:2014-11-14 04:56:36

标签: javascript parse-platform cloud-code

我有一类公司,其中包含用户指针。我想要公司类的查询是这样的:

检索公司行,其中用户对象的名称等于' ABC'

那么,我该如何形成这个查询?

var Company = Parse.Object.extend("Company");
var query = Parse.Query(Company);
query.include("User");

query.equalTo("name")       ????

是否可以在单个查询中编写此类请求? 感谢。

4 个答案:

答案 0 :(得分:15)

您需要首先根据" ABC"的名称查询用户。然后在该查询的成功回调中,使用从User查询返回的objectId对Company表执行查询。像这样:

var userQuery = Parse.Query('_User');
var companyQuery = Parse.Query('Company');

userQuery.equalTo('name', 'ABC');

userQuery.find({
  success: function(user) {
    var userPointer = {
      __type: 'Pointer',
      className: '_User',
      objectId: user.id
    }

    companyQuery.equalTo('user', userPointer);

    companyQuery.find({
      success: function(company) {
        // WHATEVER
      },
      error: function() {
      }
    });
  },
  error: function() {
  }
});

答案 1 :(得分:9)

您可以使用inner query

var Company = Parse.Object.extend("Company");
var mainQuery = Parse.Query(Company);

var UserObject = Parse.Object.extend("User");
var innerUserQuery = new Parse.Query(UserObject);
innerBankQuery.equalTo("name", "ABC");
mainQuery.matchesQuery("bank", innerBankQuery);

var ansCollection = mainQuery.collection();
    ansCollection.fetch({
        success: function(results) {
         // Do whatever ...
      }
    });

答案 2 :(得分:2)

我应该说查询将是......

const userQuery = Parse.Query('_User');

userQuery.equalTo('name', 'ABC');

userQuery.find().then((user) => {

    const companyQuery = Parse.Query('Company');

    companyQuery.equalTo('user', {
      __type: 'Pointer',
      className: '_User',
      objectId: user.id
    });

    companyQuery.find().then((company) => {
        console.log(company);
    });
});

答案 3 :(得分:0)

假设您的公司集合有一个名为User的字段,而用户集合有一个name字段,那么您可以通过以下方式使用用户名搜索公司 companyQuery.equalTo("User.name");

这在Parse 2.1.0中有效