gpt4 book ai didi

java - 如何以用户身份在 Parse 上存储和加载 session ?

转载 作者:太空宇宙 更新时间:2023-11-04 12:59:39 24 4
gpt4 key购买 nike

我目前正在为现有的 IOS 应用程序开发 Android 应用程序,因此使用 Session 对象在 Parse 上存储一些数据对我来说至关重要。

至于创建 session 并将其上传到 Parse,我没有任何问题。

public static void syncUser() {
ParseUser.getCurrentUser().fetchInBackground(new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
if (e != null) {
Log.d("", "SYNC ERROR");
e.printStackTrace();
}

if (object != null) {
syncSessions();
}
}
});
}

private static void syncSessions() {
ParseQuery<ParseSession> query = ParseQuery.getQuery(ParseSession.class);
query.fromLocalDatastore();
query.findInBackground(new FindCallback<ParseSession>() {
@Override
public void done(List<ParseSession> objects, ParseException e) {
for (ParseSession session : objects) {
fetchSession(session, null);
}
}
});
}

public static void fetchSession(final ParseSession session, final OnResultCallback cb) {
session.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e != null) {
if (cb != null)
cb.onResult(false);
e.printStackTrace();
} else {
if (cb != null)
cb.onResult(true);
ParseRelation<ParseSession> relation = ParseUser.getCurrentUser().getRelation("sessions");
relation.add(session);
syncUser();
}
}
});
}

public static void addNewSession(Date date, String link, int successValue) {
final ParseSession session = new ParseSession();
session.put("date", date);
session.put("link", link);
session.put("successValue", successValue);
session.pinInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e != null)
e.printStackTrace();
else {
fetchSession(session, new ParseManager.OnResultCallback() {
@Override
public void onResult(boolean success) {
if (success) {
try {
session.unpin();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
});
}
}
});
}

public interface OnResultCallback {
void onResult(boolean success);
}

为了使用我的参数创建新 session 并上传它,我使用 addNewSession() 方法,并且它正确显示在 Parse 仪表板中,它们具有我的字段列(日期、链接、successValue),并存储为默认 session 对象。

但是当我尝试将它们从 Parse 加载到我的客户端时,它不起作用。我用这个方法加载它们:

public static void getSessions(final OnResultCallback cb) {
ParseRelation<ParseSession> relation = ParseUser.getCurrentUser().getRelation("sessions");
ParseQuery<ParseSession> query = relation.getQuery();
query.setLimit(1000);
query.findInBackground(new FindCallback<ParseSession>() {
@Override
public void done(List<ParseSession> objects, ParseException e) {
if (e != null) {
e.printStackTrace();
if (cb != null)
cb.onResult(false);
} else {
cb.onResult(true);
}
//if (objects != null)
//USE SESSIONS
}
});
}

我发现了一个异常:

W/System.err: com.parse.ParseRequest$ParseRequestException: wrong type of relation.  Expecting: , but received: _Session
W/System.err: at com.parse.ParseRequest.newPermanentException(ParseRequest.java:270)

IOS 上非常相似的代码可以很好地处理“ session ”关系。我犯了什么错误?

UPD。我注意到,只有当我已经准备好使用 addNewSession() 发送一些自定义创建的 session 到 Parse,然后尝试使用 getSessions() 获取它们时,才会出现此异常。也许创建和发送 session 是问题所在?

最佳答案

我找到了解决方案。在我将新创建的 session 添加到用户关系之后

ParseRelation<ParseSession> relation = ParseUser.getCurrentUser().getRelation("sessions");
relation.add(session);

我尝试用 fetchInBackground 保存它们,但这是一个错误。我将syncUser()更改为ParseUser.getCurrentUser().saveInBackground()并且一切正常。

关于java - 如何以用户身份在 Parse 上存储和加载 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35035656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com