有一種方法可用於include
指針值的屬性。您不能在關係中使用include
方法。我所做的是使用雲代碼函數將我想要的結果聚合到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();
});
},
};
喜歡'請解決我的問題'。 :D – Peres
問題是什麼? –
在frndquery我得到pfrelation對象,而我從frnd查詢獲得的對象之後,我reterving從關係對象的數據,所以,現在我需要同時獲得pfquery * frndquery對象我需要的關係對象的細節我不dont想要編寫獲取pfrelation對象的代碼,我需要獲取所有細節(即由於這個我可以減少加載的細節和關係細節)。所以請幫助我 – Romance