Parse ANDROID SDK не позволяет удалить и возвращает [MongoError: исключение: Мод на _id не разрешен] в журнале
Parse android sdk не позволяет обновлять столбец в пользовательской таблице. Хотя я использую метод getCurrentUser(), чтобы пометить его как аутентифицированный, но когда я вызываю save на нем. это дает мне ошибку в файле журнала,
Uncaught internal server error. { [MongoError: exception: Mod on _id not allowed]
name: '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");
}
2 ответа
Решение
Пока я не получу хороший ответ. В настоящее время я использую свой облачный код beforeSave, запускающий синтаксический анализ, чтобы удалить поле 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();
});
Благодарю.
Вы должны сохранить ParseFile, прежде чем прикреплять его к объекту User. Ваш код должен быть таким
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");
}
}
}
});