2016-04-07 5 views
0

Ich habe einen Benachrichtigungsbildschirm in meiner iOS-App, die Anfragen aus einer Tabelle und Likes/Kommentare aus einer anderen zieht. Ich möchte nur einen Netzwerkaufruf tätigen, indem ich eine einzelne Funktion aufruft, die beide Ergebnisse meiner beiden Abfragen zurückgibt.Kombinieren Sie zwei Cloud-Code-Funktionen zu einer Funktion

Hier ist es mein Code noch funktionsfähig ist:

Anfrage Funktion

Parse.Cloud.define("loadRequestNotifications", function(request, response){ 
    var currentUser = Parse.User.current(); 

    var query1 = new Parse.Query("Requests"); 
    query1.equalTo("requestUser", currentUser); 

    var username = currentUser.get("username");  

    var query2 = new Parse.Query("Requests"); 
    query2.equalTo("driver", username); 

    var main1 = Parse.Query.or(query1, query2); 
    main1.include("drivePointer"); 
    main1.include("drivePointer.driver"); 
    main1.limit(15); 

    main1.find({ 
     success: function(results) { 

      response.success(results); 

     }, 
     error: function(error) 
     { 
     response.error(error); 
     } 
    }); 
}); 

Kommentare/Likes

Parse.Cloud.define("loadLikesAndCommentsNotifications", function(request, response) { 
    var currentUser = Parse.User.current(); 

    var query3 = new Parse.Query("Posts"); 
    query3.equalTo("driver", currentUser); 

    var query4 = new Parse.Query("Posts"); 
    query4.equalTo("passengers", currentUser.get("objectId")); 

    var main2 = new Parse.Query.or(query3, query4); 

    var main3 = new Parse.Query("Comments"); 
    main3.matchesKeyInQuery('postId', 'objectId', main2); 

    var main4 = new Parse.Query("Comments"); 
    main4.equalTo("commentBy", currentUser); 

    var activityQuery = new Parse.Query.or(main3, main4); 
    activityQuery.include("commentBy"); 
    activityQuery.limit(15); 

    activityQuery.find({ 
     success: function(results) { 
      response.success(results); 
     }, 
     error: function(error) 
     { 
     response.error(error); 
     } 
    }); 
}); 

ich für iOS und schnelle Parse SDK 1.1.12 bin mit anrufen diese Funktionen. Ich möchte den kombinierten anrufen können.

Antwort

0

Probieren Sie etwas wie es:

function loadLikesAndCommentsNotifications (request) { 
    var currentUser = Parse.User.current(); 

    var query3 = new Parse.Query("Posts"); 
    query3.equalTo("driver", currentUser); 

    var query4 = new Parse.Query("Posts"); 
    query4.equalTo("passengers", currentUser.get("objectId")); 

    var main2 = new Parse.Query.or(query3, query4); 

    var main3 = new Parse.Query("Comments"); 
    main3.matchesKeyInQuery('postId', 'objectId', main2); 

    var main4 = new Parse.Query("Comments"); 
    main4.equalTo("commentBy", currentUser); 

    var activityQuery = new Parse.Query.or(main3, main4); 
    activityQuery.include("commentBy"); 
    activityQuery.limit(15); 

    return activityQuery.find(); 
} 

Parse.Cloud.define("loadLikesAndCommentsNotifications", function(request, response){ 
    loadLikesAndCommentsNotifications(request).then(response.success, response.error); 
}); 

... 
// Similar code for loadRequestNotifications 
... 

Parse.Cloud.define("loadRequestAndLikesAndCommentsNotifications", function(request, response){ 
    loadLikesAndCommentsNotifications(request).then(function (results) { 
     var finalResults = { likesAndComments: results}; 
     loadRequestNotifications(request).then(function (results) { 
      finalResults.request = results; 
      response.success(finalResults); 
     }, response.error); 
    }, response.error); 
}); 
+0

ich versucht habe es und 'Parse.Cloud.define ("loadRequestAndLikesAndCommentNotifications")' nicht in der Lage ist, die erste Funktion aufzurufen 'loadLikesAndCommentsNotifications' – kareem

+0

' Typeerror: Object # hat keine Methode 'catch'' ist der Fehler, ist Fang nicht erlaubt? – kareem

+0

versuche .error (response.error) stattdessen ... Ich werde die Antwort bearbeiten. –

Verwandte Themen