将两个云代码函数合并为一个函数

Combine two cloud code functions to one function

本文关键字:函数 合并 一个 两个 代码      更新时间:2024-02-08

我的iOS应用程序中有一个通知屏幕,它从一个表中提取请求,并从另一个表提取点赞/评论。我只想通过调用一个返回两个查询结果的函数来进行一次网络调用。

这是我的代码,它目前正在运行:

请求功能

   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);
      }
    }); 
});

评论/喜欢

 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);
      }
    });
});

我正在使用iOS版的Parse SDK 1.1.12和swift来调用这些函数。我希望能够直接调用组合的。

试试类似的东西:

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);
});