2016-11-24 22 views
0

我幾乎完成了將一個Objective-C iOS應用程序從Parse.com遷移到一個自託管的Parse-Server。 但是在做一些檢查時,我注意到我的雲功能Parse.Cloud.beforeSave未執行,或者至少沒有完成所有工作。 這是爲什麼?Parse.Cloud.beforeSave不工作/ Parse-Server

集合(MyCollection)我想添加記錄以按預期進行更新,但是我有第二個集合(用於圖書保存),我更新了(保留最後插入的項目的數量)這並沒有完成。

僅供參考,這裏是功能代碼:更多

Parse.Cloud.beforeSave 
("MyCollection", function(request, response) 
{ 
var queryConfig; 

var queryConfig = new Parse.Query("BooKeep"); 
queryConfig.find({ 
        success: function(resultConf) { 
        request.object.set("..", resultConf[0].get("...")+1); // This is done as expected. 
        resultConf[0].set("...", resultConf[0].get("...")+1); // Not done! 
        request.object.set("...", resultConf[0].get("...")+1); // This is done as expected. 
        resultConf[0].set("....", resultConf[0].get("...")+1); // Not done! 
        resultConf[0].save(null,{}); // Not done! 
        .... 
        response.success(); 
        }, 
        error: function() { 
        var reptMsg="The BooKeep-UPDATE procedure failed for some reason."; 
        console.log(reptMsg); 
        response.error(reptMsg); 
        } 
        }); 
    }); 

有點調查之路越走越,顯示在日誌下面。至少現在我知道Parse.Cloud.beforeSave是運行的,我之前並不確定。

app[web.1]: info: beforeSave triggered for MyCollection for user Yacb6CzuB9: 
app[web.1]: Input: {....} 
app[web.1]: Result: {"object":{....}} className=MyCollection, triggerType=beforeSave, user=Yacb6CzuB9 
app[web.1]: error: Error generating response. { [Error: unauthorized: master key is required] status: 403, message: 'unauthorized: master key is required' } status=403, message=unauthorized: master key is required 
app[web.1]: Error: unauthorized: master key is required 
app[web.1]:  at promiseEnforceMasterKeyAccess (/app/node_modules/parse-server/lib/middlewares.js:297:17) 
app[web.1]:  at /app/node_modules/parse-server/lib/PromiseRouter.js:137:22 
app[web.1]:  at process._tickDomainCallback (internal/process/next_tick.js:129:7) 
app[web.1]: error: Error generating response. ParseError { 
app[web.1]: code: 119, 
app[web.1]: message: 'Permission denied for action update on class BooKeep.' } code=119, message=Permission denied for action update on class BooKeep. 
app[web.1]: [object Object] 
heroku[router]: at=info method=POST path="/parse/classes/BooKeep/JKKmaSzi8H" host=myapp.herokuapp.com request_id=1348711c-25df-4f6e-005b-70632776742d fwd="54.90.99.197" dyno=web.1 connect=0ms service=34ms status=400 bytes=573 
2016-11-25T02:47:58.488404+00:00 heroku[router]: at=info method=POST path="/parse/logout" host=myapp.herokuapp.com request_id=dc3b12d1-5f54-11f0-a8cd-54ceca331a80 fwd="106.130.44.123" dyno=web.1 connect=0ms service=23ms status=200 bytes=483 
+0

您正在使用哪個版本的分析服務器? –

+0

我該如何檢查?我幾天前才知道,我想這是最新的。 – Michel

+0

我運行的Parse命令行界面是版本3.0.2。我只是跑分析更新,我現在使用版本3.0.5。但我不確定它與我的問題有關。 – Michel

回答

0

我已經能夠使其通過進入_SCHEMA收集和不斷變化的工作:

"update": { 
     "Yacb6CzuB9": true 
    }, 

到:

"update": { 
     "*": true, 
     "Yacb6CzuB9": true 
    }, 

該類BooKeep。

我還是不明白爲什麼我必須這麼做,因爲我不需要每個人都擁有更新權限,但事實是它現在可以工作。 如果有人能評論並指出更好的解決方案,我會很高興。