解析,添加关系。无法编码与未保存的ParseObject的关联

时间:2015-06-03 16:10:58

标签: android parse-platform

我正在尝试使用表格栏上的栏添加表用户的关系。条形码已存在于我的数据库中,但我总是收到错误“无法编码与未保存的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);
                }
            }
        });

任何提示?与权限相关的东西?我假设当前用户能够编写自己的数据,但我的代码中没有任何特定的设置。

谢谢!

3 个答案:

答案 0 :(得分:0)

您确定用户已登录吗?看起来user.getCurrentUser()可能返回null,这可以解释粘滞错误。

答案 1 :(得分:0)

我不知道发生了什么,但我在Parse控制台上删除了我的用户。我创建了一个新的,现在一切正常!

答案 2 :(得分:0)

我无法评论或赞成但我想知道删除和阅读用户也解决了我的问题,以防其他人遇到同样的问题。