2016-02-25 60 views
1

我一直堅持這一整天,所以如果任何人都可以指出我在正確的方向!解析,PFCloud - 如何重寫這個PFQuery?

我目前正在構建一個使用Parse作爲後端和Parse Cloud來加密/解密數據的IOS應用程序。在下面的代碼中,我在Parse上執行PFQuery以獲取我需要的數據,但是我想在返回數據之前在服務器端解密數據。

這是代碼,我現在用它來請求並顯示數據:

(PFQuery *)queryForTable 
{ 
    arrdossier=[[NSUserDefaults standardUserDefaults ]objectForKey:@"Dossier_IDs"]; 
    query1 = [PFQuery queryWithClassName:self.parseClassName]; 
    [query1 whereKey:@"Dossier_ID" containedIn:arrdossier]; 
    [query1 whereKey:@"status" equalTo:@"open"]; 

    return query1; 
} 

,我對解析雲計算的代碼是:

Parse.Cloud.define("decryptQuery", function(request, response) { 

    var doss = Parse.Object.extend("Dossier"); 
    var q = new Parse.Query(doss); 
    q.containsAll("Dossier_ID", request.params.Dossier_IDs); 
    q.find({ 
     success: function(results) { 
     // iterate through results to call decrypt() 
     response.success(); 
    }, 
    error: function() { 
     response.error("failed"); 
    } 
    }) 
}); 

將在PFCloud callFunctionInBackground是什麼樣的,以做到這一點?

謝謝!

回答

0

我只有我使用的目標C代碼,但它不應該很難將其轉換爲Swift。

[PFCloud callFunctionInBackground:@"decryptQuery" 
         withParameters:@{@"Dossier_IDs": @[ARRAY WITH IDS]} 
           block:^(id answer, NSError *error) { 
            if (!error) { 
             //do something with answer 
            } 
            else { 
             //do something with error 
            } 

}]; 
+0

queryForTable期待PFQuery。我已更改Cloud Code中的「結果」的值,但是如何返回此結果?我怎樣才能把它變成一個PFQuery? – maverickandy

+0

@maverickandy調用一個雲功能,你不需要PFQuery,調用上面提供的函數,你需要將任何信息傳遞給雲嗎?如果是這樣的話?你想要雲返回什麼? –

+0

流程如下:在IOS應用程序中,我運行PFQuery來提取數據(即「Dossiers」)。不過,我現在增加了使用雲代碼加密/解密數據的功能。因爲我的IOS功能(queryForTable)需要返回一個PFQuery爲我的IOS應用程序正常運行。 因此,現在我已經構建了一個Cloud代碼來運行PFQuery並遍歷PFQuery的結果並使用解密版本更新字段(例如results [i] .set(「name」,decrypt(name))。 有沒有辦法讓我從雲代碼中返回一個PFQuery(或PFObject,並以某種方式將其轉換爲PFQuery)? – maverickandy