Parse android SDK不允许更新用户表中的列
我正在使用getCurrentUser()
方法将其标记为已通过身份验证。当我在其上调用saveInBackground()
时,我在日志文件中收到以下错误:
未捕获的内部服务器错误。 {[MongoError:异常:不允许在_id上使用Mod] 名称:' MongoError'
以下是我用于保存的代码:
byte[] data = "Working at Parse is great!".getBytes();
final ParseFile file = new ParseFile("abcdef.txt", data);
ParseUser currentUser = ParseUser.getCurrentUser();
if (currentUser != null) {
// do stuff with the user
currentUser.put("column_name", file);
currentUser.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.i("KQ", "update successfully");
} else {
Log.i("KQ", "update error e = " + e);
}
}
});
} else {
// show the signup or login screen
Log.i("KQ", "else");
}
答案 0 :(得分:0)
在将ParseFile附加到User对象之前,必须保存ParseFile。 你的代码应该是这样的
byte[] data = "Working at Parse is great!".getBytes();
final ParseFile file = new ParseFile("abcdef.txt", data);
file.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if(e==null)
{
ParseUser currentUser = ParseUser.getCurrentUser();
if (currentUser != null) {
// do stuff with the user
currentUser.put("column_name", file);
currentUser.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.i("KQ", "update successfully");
} else {
Log.i("KQ", "update error e = " + e);
}
}
});
} else {
// show the signup or login screen
Log.i("KQ", "else");
}
}
}
});
答案 1 :(得分:0)
直到我得到一个很好的答案。我目前正在使用我的云代码,然后在解析中保存触发器以删除id字段以摆脱异常并取消阻止我的工作。 任何好的答案仍然会受到赞赏。
我现在使用的代码如下云代码。
Parse.Cloud.beforeSave(Parse.User, function(request, response) {
// For Android SDK remove id field while updating a user becasue it was creating MongoDB Exception in android.
if (request.object.get("updatedFrom") == 'android') {
request.object.unset("updatedFrom");
request.object.unset("id");
}
response.success();
});
感谢。