使用承諾,你可以把它分成幾個獨立的部分。承諾真的很棒,使用起來也非常容易,也很容易創建你自己的承諾。
我會做的拆分這件事成找到朋友ID,然後是找到朋友查詢的查詢......
Parse.Cloud.define("searchfriend", function(request, response) {
getFriendIDs(request.params.myid).then(function(friendIDs) {
return getFriendUserNames(friendIDs);
}).then(function(friends) {
response.success(friends);
}), function(error) {
response.error(error);
});
});
// function to get the IDs of friends
function getFriendIDs(myID) {
var promise = new Parse.Promise();
var query = new Parse.Query("friends");
query.equalTo("player", myID);
query.find().then(function(friendIDs) {
promise.resolve(friendIDs);
}, function(error) {
promise.reject(error);
});
return promise;
}
// function to get the friends from a list of IDs
function getFriendUserNames(friendIDs) {
var promise = new Parse.Promise();
var query = new Parse.Query("_User");
query.containedIn("id", friendIDs);
query.find().then(function(friends) {
// here I am just returning the array of friends
// but you can pull the names out if you want.
promise.resolve(friends);
}, function(error) {
promise.reject(error);
});
return promise;
}
你總是可以用戶查詢相匹配太...
// function to get friends
function getFriends(myID) {
var promise = new Parse.Promise();
var friendQuery = new Parse.Query("friends");
friendQuery.equalTo("player", myID);
var userQuery = new Parse.Query("User");
userQuery.matchesKeyInQuery("ID", "friendID", friendQuery);
userQuery.find().then(function(friends) {
promise.resolve(friends);
}, function(error) {
promise.reject(error);
});
return promise;
}
這將執行一個加入的查詢,它首先獲取好友ID,然後使用好友ID獲取用戶並返回用戶對象。
另外,使用承諾。他們更容易合作,可以拆分成不同的工作單位。
當然,我不知道這裏的語法是否正確以及正確的名字應該是什麼,甚至是你的對象模型的樣子,但希望這可以作爲指導。
嗨Fogmeister,thx爲您的答覆。不幸的是你上面的代碼只返回[],我不知道從哪裏開始,因爲調試雲代碼幾乎是不可能的。 – markus
您可以使用console.log()進行調試,並且它將在線打印它。你在錯誤日誌中看到任何錯誤嗎?另外,你確定我寫的代碼對你的對象模型有效嗎? – Fogmeister
我已經嘗試console.log()與以下輸出:I2015-05-22T10:29:00.994Z] v58 Ran雲功能searchfriend用戶Ln9sP86iWk與: 輸入:{「myid」:「Ln9sP86iWk」} 結果:[] I2015-05-22T10:29:01.021Z] {「_ resolved」:false,「_ rejected」:false,「_ resolvedCallbacks」:[],「_ rejectedCallbacks」:[]} I2015-05- 22T10:29:01.073Z] {「_ resolved」:false,「_ rejected」:false,「_ resolvedCallbacks」:[],「_ rejectedCallbacks」:[]} – markus