2016-03-02 63 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);' –