从Parse类中删除整行

时间:2013-11-10 02:47:45

标签: android parse-platform

如何从android中的Parse User类中删除整行?我希望用户能够从我的应用程序中删除他们的帐户,如果他们删除了他们的帐户,我希望能够删除他们的整个用户行。

3 个答案:

答案 0 :(得分:4)

在用户对象上调用其中一种删除方法:delete()deleteEventually()deleteInBackground()等。

示例:

ParseUser user = ParseUser.getCurrentUser();
user.deleteInBackground();

ParseUser类是ParseObject的子类,因此它具有所有相同的删除方法。您可以查看API参考here以获取更多信息。

答案 1 :(得分:1)

我想我会针对您需要删除用户的情况略有不同提供额外的反馈。我使用Eric Amorde给出的答案作为起点,但在运行测试时我不得不删除用户。基本目标是在用户注册后从解析数据库中删除用户。这将使我不必每次运行测试时都进入并删除用户。我最初使用上面的代码Eric Amorde在静态方法中发布,但没有得到任何结果。由于我在后台注册过程中创建了用户,因此我不得不在后台删除用户。其他人可能知道我应该使用的更好的方法,但下面是代码片段,其中包括我在线程在后台工作时所做的所有事情。

    user.signUpInBackground(new SignUpCallback() {
                @Override
                public void done(ParseException e) {
                    dlog.dismiss();
                    if (e != null) {
                        /**
                         * Show the error message
                         */
                        Toast.makeText(RegisterActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                    } else {
                        /**
                         * Start a new intent for the dispatch activity
                         */
                        Intent intent = new Intent(RegisterActivity.this, DispatchActivity.class);
                        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                        RegisterActivity.this.startActivity(intent);

                        /**
                         * Check to see if the username is ParseUser and immediately deletes from
                         * Parse database to allow repeated runs of the RegisterActivityEspressoTest
                         */
                        if(etUsername.getText().toString().equals("ParseUser")){
                            ParseUser registerTestUser = new ParseUser();
                            registerTestUser.getCurrentUser().deleteInBackground();
                        }
                    }
                }
            });

答案 2 :(得分:0)

由于在删除方法之后无法注销/清除本地数据存储区,因此接受的答案可能会产生错误。

1)根据Parse的文档,delete()并不总是足以删除和注销用户。有时,即使在delete()调用之后,用户仍然通过本地数据存储区登录,导致下次用户打开应用程序时出现错误(或者只是下次应用程序使用getCurrentUser()方法检查当前用户时。相反,必须在delete函数的回调中调用logout,如下所示:

ParseUser currentUser = ParseUser.getCurrentUser();
currentUser.deleteInBackground(new DeleteCallback() {
                public void done(ParseException e) {
                    if (e == null) {
                        currentUser.logOutInBackground();     
                    } else {
                        //handle the error
                    }
                }
            });

这是违反直觉的,因为如果帐户已被删除,您认为不应该注销,但是您可以这样做。

2)另外值得注意的是,只有在用户通过身份验证(使用login(),signup()或getCurrentUser()API调用)时才能调用delete。从Parse文档: 具体来说,除非使用经过身份验证的方法(如logIn或signUp)获取ParseUser,否则无法调用任何保存或删除类型方法。这可确保只有用户才能更改自己的数据。