我使用Android的parse.com後端。調用ParseUser.save刪除會話
我想註冊一個新用戶,然後在用戶對象上設置一些數據字段。註冊後設置數據字段非常重要,因爲稍後我想使用beforeSave觸發器啓用自動ACL設置(目前沒有激活觸發器!)。
會發生什麼情況如下:註冊成功完成,之後我設置數據字段並致電currentUser.save
。有時SaveCallback
根本沒有被調用(既沒有錯誤也沒有成功)。但是,大部分時間被調用,但用戶的會話被刪除。我可以在數據瀏覽器中輕鬆檢查。另外,如果我在此之後嘗試做任何事情,我會得到無效的會話例外。
下面的代碼:
final User user = getData();
user.setEmail(emailStr);
user.setUsername(emailStr);
user.setPassword(password);
user.signUpInBackground(new SignUpCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
// this will be more complex data in the future
User.getCurrentUser().put("testInt", 5);
User.getCurrentUser().saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
// Hooray! But wait.. Oh no, the session is gone
} else {
// Oh no, something even worse happened
}
}
});
} else {
// signup failed
}
}
});
超過一天後,嘗試&錯誤我開始認爲,這實際上是在分析框架中的錯誤。 guide明確指出:
新的ParseUser應始終使用signUpInBackground(或signUp)方法創建。通過調用save可以完成對用戶的後續更新。
有沒有人有類似的行爲?
1.正如我所說,我真的想避免與註冊保存數據,因爲我想使用只有當用戶登錄時才起作用的觸發器。 2.您確定必須在調用後登錄註冊?因爲[doc](https://parse.com/docs/android/api/com/parse/ParseUser.html#signUp%28%29)指出: 「這將在服務器上創建一個新的ParseUser,將會話保留在磁盤上,以便您可以使用'ParseUser.getCurrentUser()'「訪問用戶。 另外,如果我刪除了對「save」的調用,並且只是註冊,則會按照預期創建用戶會話對象。 – dpoetzsch