我正在尝试使用表格栏上的栏添加表用户的关系。条形码已存在于我的数据库中,但我总是收到错误“无法编码与未保存的ParseObject的关联”。
ParseUser user = ParseUser.getCurrentUser();
ParseObject barParseObject = ParseObject.createWithoutData(TABLE_BAR, bar.getBarId());
ParseRelation<ParseObject> relation = user.getRelation(ApiUserMapper.FIELD_LIKES);
if (bar.isFavourite()) {
relation.add(barParseObject);
} else {
relation.remove(barParseObject);
}
user.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
resultCallback.processResults(bar);
} else {
if (BuildConfig.DEBUG) {
Log.e(TAG, "Error: updateFav " + e.getMessage());
}
resultCallback.processError(e);
}
}
});
bar.getBarId()包含一个已经存储在数据库中的有效ObjectId,但我也尝试过查询该条,然后才得到相同的结果。
ParseQuery<ParseObject> query = ParseQuery.getQuery(TABLE_BAR);
query.getInBackground(bar.getBarId(), new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e) {
if (e == null) {
ParseRelation<ParseObject> relation = user.getRelation(ApiUserMapper.FIELD_LIKES);
if (bar.isFavourite()) {
relation.add(object);
} else {
relation.remove(object);
}
user.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
resultCallback.processResults(bar);
} else {
if (BuildConfig.DEBUG) {
Log.e(TAG, "Error: updateFav " + e.getMessage());
}
resultCallback.processError(e);
}
}
});
}
}
});
如果我尝试以相反的方式添加关系,它可以正常工作。但我希望将关系添加到用户表上。
ParseObject barParseObject = ParseObject.createWithoutData(TABLE_BAR, bar.getBarId());
ParseRelation<ParseObject> relation = barParseObject.getRelation(ApiUserMapper.FIELD_LIKES);
relation.add(user);
barParseObject.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
resultCallback.processResults(bar);
} else {
if (BuildConfig.DEBUG) {
Log.e(TAG, "Error: updateFav " + e.getMessage());
} else {
Crashlytics.log(LOG_PRIORITY, TAG, "Error: updateFav " + e.getMessage());
}
resultCallback.processError(e);
}
}
});
任何提示?与权限相关的东西?我假设当前用户能够编写自己的数据,但我的代码中没有任何特定的设置。
谢谢!
答案 0 :(得分:0)
您确定用户已登录吗?看起来user.getCurrentUser()
可能返回null,这可以解释粘滞错误。
答案 1 :(得分:0)
我不知道发生了什么,但我在Parse控制台上删除了我的用户。我创建了一个新的,现在一切正常!
答案 2 :(得分:0)
我无法评论或赞成但我想知道删除和阅读用户也解决了我的问题,以防其他人遇到同样的问题。