NSPredicate *predicate=[NSPredicate predicateWithFormat:@"(UserId==%@)",[defaluts objectForKey:@"objectId"]];
PFQuery *frndquery=[PFQuery queryWithClassName:@"FriendsDetails" predicate:predicate];
[frndquery orderByDescending:@"lastdate"];
[frndquery whereKey:@"BlockStatus" equalTo:@"No"];
NSArray *arrquery=[frndquery findObjects];
for (PFObject *frndids in arr){
PFRelation *relation=[frndids relationforKey:@"ChatRelation"];
NSArray *arrids=[NSArray arrayWithObjects:[frndids objectForKey:@"UserId"],[frndids objectForKey:@"ConversationID"], nil];
PFQuery *statusQuery = [relation query];
[statusQuery orderByDescending:@"createdAt"];
[statusQuery whereKey:@"Deletechat" notContainedIn:arrids];
statusQuery.limit = [[NSNumber numberWithInt:1] intValue];
NSArray *arrforrelationobjects=[statusQuery findObjects];}
我想在从第一个查询本身检索对象时找到所有对象。请解决我的问题
答案 0 :(得分:0)
您可以使用一种方法将include
属性用作指针值。您不能将include
方法与关系一起使用。我所做的是使用Cloud Code函数将我想要的结果聚合到JSON对象中并返回该对象。
请参阅以下脚本中的fetchPostDetails
函数。
https://github.com/brennanMKE/PostThings/blob/master/Parse/PostThings/cloud/main.js
它获取的项目是关系对象,例如标签和喜欢,它们恰好是User
与Post
类关系的对象。还有一些注释被引用作为指向每个注释的帖子的指针。 fetchPostTags
和fetchPostLikes
方法显示了如何获取这些关系并填充保存所有结果的JSON对象。您需要部署这些Cloud Code更新,然后从iOS端将其作为一项功能进行访问。结果将作为NSDictionary返回,其中包含帖子,标签,赞和评论的值。帖子是Post对象的数组。标签,喜欢和评论是NSDictionary对象,它们以postId作为访问Parse对象数组的键。
通过这种方式,您可以根据需要调用该函数。
我已将下面的一些代码作为参考,以防GitHub上的内容发生变化。
// Helper functions in PT namespace
var PT = {
eachItem : function (items, callback) {
var index = 0;
var promise = new Parse.Promise();
var continueWhile = function(nextItemFunction, asyncFunction) {
var item = nextItemFunction();
if (item) {
asyncFunction(item).then(function() {
continueWhile(nextItemFunction, asyncFunction);
});
}
else {
promise.resolve();
}
};
var nextItem = function() {
if (index < items.length) {
var item = items[index];
index++;
return item;
}
else {
return null;
}
};
continueWhile(nextItem, callback);
return promise;
},
arrayContainsItem : function(array, item) {
// True if item is in array
var i = array.length;
while (i--) {
if (array[i] === item) {
return true;
}
}
return false;
},
arrayContainsOtherArray : function(array, otherArray) {
/// True if each item in other array is in array
var i = otherArray.length;
while (i--) {
if (!PT.arrayContainsItem(array, otherArray[i])) {
return false;
}
}
return true;
},
fetchPostTags : function(post) {
return post.relation("tags").query().find();
},
fetchPostLikes : function(post) {
return post.relation("likes").query().find();
},
fetchPostComments : function(post) {
var query = new Parse.Query(Comment);
query.include("owner");
query.equalTo("post", post);
return query.find();
},
fetchPostDetails : function(post, json) {
json.tags[post.id] = [];
json.likes[post.id] = [];
json.comments[post.id] = [];
return PT.fetchPostTags(post).then(function(tags) {
json.tags[post.id] = tags;
return PT.fetchPostLikes(post);
}).then(function(likes) {
json.likes[post.id] = likes;
return PT.fetchPostComments(post);
}).then(function(comments) {
json.comments[post.id] = comments;
json.count++;
return Parse.Promise.as();
});
},
};