16

我有一个具有用户指针的公司类别。我想在Company类上的查询是这样的:

检索用户对象的名称等于“ABC”的公司

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

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

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

是否可以在单个查询中编写这样的请求?谢谢。

4

4 回答 4

18

您需要首先根据“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() {
  }
});
于 2014-12-01T01:30:40.747 回答
12

您可以使用内部查询

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 ...
      }
    });
于 2015-02-10T04:09:42.987 回答
4

我应该说查询将是...

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);
    });
});
于 2017-02-22T16:51:31.453 回答
1

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

这适用于 Parse 2.1.0

于 2018-11-11T07:10:54.883 回答