无法编辑其他 Parse User 对象,保存在后台不会写入 Parse Dashboard
Can't edit other Parse User objects , save In Background doesn't write in Parse Dashboard
我一直在为这个问题绞尽脑汁,我真的需要一些帮助!!我对 Android 很陌生。
我的问题如下,我已经用一些列完成了用户 Class,例如 "Former Friends",这是一个字符串列表。
我执行第一个查询,然后找到与查询匹配的 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();
没有错误,但没有针对未登录用户的更新
非常感谢,
塞尔
出于安全原因,在 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
}
}
});
我一直在为这个问题绞尽脑汁,我真的需要一些帮助!!我对 Android 很陌生。
我的问题如下,我已经用一些列完成了用户 Class,例如 "Former Friends",这是一个字符串列表。 我执行第一个查询,然后找到与查询匹配的 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();
没有错误,但没有针对未登录用户的更新
非常感谢,
塞尔
出于安全原因,在 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
}
}
});