我有一类公司,其中包含用户指针。我想要公司类的查询是这样的:
检索公司行,其中用户对象的名称等于' ABC'
那么,我该如何形成这个查询?
var Company = Parse.Object.extend("Company");
var query = Parse.Query(Company);
query.include("User");
query.equalTo("name") ????
是否可以在单个查询中编写此类请求? 感谢。
答案 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中有效