2016-03-02 60 views
0

我正在製作一個簡單的金錢交易應用程序,其中user1使用parse.com和雲代碼使用masterkey爲user1權限轉移貨幣至user2以覆蓋所有其他權限。使用BeforeSave更新解析對象

final ParseQuery<ParseObject> parseQuery = ParseQuery.getQuery(user.getClassName()); 
      Log.d("class found : ",String.valueOf(user.getClassName())); 
      parseQuery.whereMatches("AccountNumber", mAccountNumber.getText().toString().trim()); 
      parseQuery.getFirstInBackground(new GetCallback<ParseObject>() { 
       @Override 
       public void done(final ParseObject parseObject, ParseException e) { 
        if (parseObject != null) { 
         Log.d("userID",String.valueOf(parseObject.getObjectId())); 
         balance = Integer.parseInt(mbalance.getText().toString()); 
         q = parseObject.getInt("balance"); 
         parseObject.put("balance", balance + q); 
         parseObject.saveInBackground(new SaveCallback() { 
          @Override 
          public void done(ParseException e) { 
           if (e == null) { 
            Toast.makeText(TransferToAccount.this, "DOne!!", Toast.LENGTH_SHORT).show(); 
           } else { 
            Log.d("Exception", "1"); 
            e.printStackTrace(); 
           } 
          } 
         }); 
        } else { 
         Log.d("Exception", "2"); 
         Toast.makeText(TransferToAccount.this, "No user found ", Toast.LENGTH_SHORT).show(); 
         e.printStackTrace(); 

,這是可能的代碼:

Parse.Cloud.beforeSave(Parse.User, function(request, response) { 
Parse.Cloud.useMasterKey(); 
var user = request.user; 
if (user.existed()) { return; } 
user.setACL(new Parse.ACL(user)); 
user.save(); 
// add user to role 
var roleName = "member"; 
var roleQuery = new Parse.Query(Parse.Role); 
roleQuery.equalTo("name", roleName); 
roleQuery.first().then(function(role) { 
role.getUsers().add(user); 
// save role 
return role.save(); 
}); 

當我試圖轉移我得到一個Exception

W/System.err: com.parse.ParseException: java.lang.IllegalArgumentException: Cannot save a ParseUser that is not authenticated. 

W/System.err: Caused by: java.lang.IllegalArgumentException: Cannot save a ParseUser that is not authenticated. 

對不起,如果我做了我自己不清楚。

+0

請記住,Parse正在關閉,所以最好儘快離開它。同時,儘管我希望有人能夠提供幫助。 – Vidia

+1

@Vidia我正在使用我的大學項目解析,所以這不會是一個問題atm,謝謝無論如何。 –

回答

0

在閱讀this後,我可以通過創建第二個類,使用指向_User的第二個類來解決我的問題,而無需使用雲代碼。

0

您無法在保存前爲用戶分配角色。嘗試將其更改爲afterSave觸發器。

+0

這是我得到的錯誤: –

+0

結果:TypeError:無法在e處調用未定義的 方法'getUsers'。在e.i(Parse.js:14:27703) at e.a.value(Parse.js:14:27063) at e。(主要是19:10) 。 (Parse.js:14:27774) 在EI(Parse.js:14:27703) 在Parse.js:14:28316 在升(Parse.js:14:28120) 在eavalue(解析。 (Parse.js:14:27748) at eavalue(Parse.js:14:27063) –

+0

它似乎不識別getUsers(),我不知道它是否是一些你定義的函數與否,但我會刪除它,並嘗試類似於這個'role.relation(「users」)。add(user);' –