无法编辑其他“解析用户”对象,“在后台保存”不会写入“解析仪表板”中

时间:2019-05-20 18:23:06

标签: java android parse-platform

在这个问题上,我一直到处都是,我真的需要一些帮助!我刚接触Android。

以下是我的问题,我已经完成了一些带有某些列的User Class,例如“以前的朋友”,这是String的列表。 我先进行查询,然后找到与查询匹配的Parseuser对象(不是登录用户),然后尝试填充这些列。

我还更新了登录用户的信息

它对于已登录的用户正常运行,但是我看不到其他Parse对象用户的填充信息

我尝试修改第一个用户(objects.get(0))的写访问权限,但这不起作用

ParseQuery<ParseUser> query = ParseUser.getQuery();


 query.whereNotEqualTo("username", getCurrentUser().getUsername());

query.whereNotContainedIn("username",getCurrentUser().getList("Former_friends"));



 query.findInBackground(new FindCallback<ParseUser>() {
     @Override
  public void done(List<ParseUser> objects, ParseException e) {



  if (e == null) {

  if (objects.size() > 0) {


// Here I just add the first object to a list and I update the current user data ,that works fine


List<String> aList = ParseUser.getCurrentUser().getList("Former_friends");
                                                aList.add(objects.get(0).getString("username"));


                                                ParseUser.getCurrentUser().put("Former_friends", aList);


                                                ParseUser.getCurrentUser().saveInBackground();


 ParseUser userfound =objects.get(0);

// The two following Lines doesn't work. I don't see "Any String" in the ParseDashboard "Name" columns..                                                

userfound.put("Name","Any String");
userfound.saveInBackground();

没有错误,但没有登录用户的更新

大哥,

同步

1 个答案:

答案 0 :(得分:0)

出于安全原因,在Parse Server中,一个用户不能直接从客户端更改另一个用户对象。例如,如果可能,不良用户可能会擦除所有其他用户的数据。

因此,此操作需要您编写云代码功能。您应该在此处具有类似于此功能的云功能:

Parse.cloud.define('formerFriends', async request => {
  const query = new Parse.Query(Parse.User);
  query.notEqualTo('username', request.user.getUsername());
  query.notContainedIn('username', request.user.get('Former_friends'));
  const objects = await query.find({ useMasterKey: true });
  if (object.length > 0) {
    const aList = request.user.get('Former_friends');                                                
    aList.add(objects[0].getUsername());
    request.user.set('Former_friends', aList);
    await request.user.save();
    const userfound = objects[0];
    userfound.set('Name', 'Any String');
    await userfound.save(null, { useMasterKey: true });
  }
});

然后像这样从Android调用云功能:

HashMap<String, Object> params = new HashMap<String, Object>();
ParseCloud.callFunctionInBackground("formerFriends", params, new FunctionCallback<Float>() {
  void done(Object result, ParseException e) {
    if (e == null) {
      // success
    }
  }
});