nat*_*rio 11 android parse-platform
我让用户更改他的凭据.他键入了新的用户名,电子邮件和密码,我想:
ParseUser user = ParseUser.getCurrentUser();
user.setUsername("MY NEW NAME");
user.setEmail(email);
user.setPassword("MY NEW PW");
user.saveInBackground(...);
Run Code Online (Sandbox Code Playgroud)
所以呢?所以这个save()调用可能会因为很多原因而失败(例如:其他人已经使用了用户名).我可以说,在这种情况下,上述字段都没有得到更新,这是公平的:我显示错误,用户知道一切都出错了.
如果您注意到事情变得复杂,即使在之后ParseException,user上面会保留其脏字段,这些字段无法保存到服务器.即
//saveInBackground fails
//...
user.getUsername().equals("MY NEW NAME") // true!
Run Code Online (Sandbox Code Playgroud)
现在,我可以通过调用将这些字段恢复为正确的值user.fetch(),但这不适用于该password字段.
这是特别不需要的,因为任何未来的呼叫save()或此类呼叫(可能不会因为可能是完全不同的呼叫而失败)也会更新密码!即
//later
ParseUser user = ParseUser.getCurrentUser();
user.put("stuff");
user.save();
Run Code Online (Sandbox Code Playgroud)
这不仅会放"东西",还会将密码更改为"我的新PW" ..用户不知道.
有没有办法重置本地password字段,除此之外fetch()不起作用?我知道我可以通过三种不同的查询来保存用户名,电子邮件和密码,但这不是我案例的可能解决方案.
查看我在变更日志中读到的最新版本:
\n\n\n\n\nV1.10.2 \xe2\x80\x94 2015 年 9 月 15 日
\n\n新增内容:添加了 ParseObject.revert() 和 revert(key) 以允许恢复\n 脏更改
\n
看起来可能就是这样了。这绝对是需要的。
\n| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |