在JavaScript中解析parse.com对象中指针的查询

16

我有一个名为Company的类,其中包含User指针。我想在Company类上进行以下查询:

检索具有名称等于“ABC”的User对象的Company

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

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

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

有没有可能用一次查询来编写这样的请求? 谢谢。

4个回答

19

首先,您需要根据“ABC”名称查询用户。然后在该查询的成功回调中,使用从用户查询返回的objectId来查询公司表。类似这样:

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() {
  }
});

嗨,谢谢你的回答。我问这个问题是因为我需要知道是否可以在单个查询中实现。类似于MySql中的内部查询。 - Y M
创建指针元素非常麻烦,但这确实有效。谢谢你。 - DiamondDrake

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 ...
      }
    });

2
在你的例子中,innerBankQuery 是什么? - Neil Galiaskarov

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);
    });
});

1
假设您的公司集合有一个名为的字段,而User集合有一个字段,则可以通过以下方式搜索具有用户名的公司:companyQuery.equalTo("User.name");
这在Parse 2.1.0中有效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接