Обновление существующей записи на parse.com не работает, делая дублирование

Я работаю над демонстрацией parse.com, я хочу обновить существующую запись из таблицы на parse.com. Каждый раз, когда он делает дубликат записи. Я пробовал то, что ниже.

ParseQuery<parseobject> query = new ParseQuery<parseobject>("MQOD");

 // query.orderByDescending("createdAt");
 query.whereEqualTo("DeviceId", android_id);

 // query.toString();
 System.out.println("::::::::::::::::::QUERY:::::::::::::::"
 + query);
 try {
 ob = query.find();
 } catch (com.parse.ParseException e1) {
 // TODO Auto-generated catch block
 e1.printStackTrace();
 }
 testObject.put("DeviceId", android_id);
 testObject.put("InstallationDate", subscriptionDate);
 testObject.put("Subscription", "Done");
 testObject.put("NextSubscription", upGradeDate);

 try {
 testObject.save();
 } catch (com.parse.ParseException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }

 } else {
 // Purchase error...!!
 System.out.println("::::::::::::::::::::::::Purchase consumehas failed:::::::::::::::::::::");
 }
}
</parseobject></parseobject>
1 ответ

Из вашего кода кажется, что вы не используете стандартный идентификатор id идентификатора objectID (это официальное поле идентификатора, используемое во всей таблице классов Parse), но DeviceId (я полагаю, это ваше настраиваемое поле).

В противном случае вы должны сделать свой DeviceId уникальным полем, и, чтобы это стало возможным, вы должны проверить новый входящий DeviceId в триггере синтаксического анализа "beforeSave" и, таким образом, проверить, существует ли этот элемент или нет (см. Также: https://www.parse.com/questions/unique-fields--2)

Итак, теперь это нормально, что вы получаете дублирование каждый раз, потому что он считается Insert вместо Update (поскольку вы не указываете objectId)

Надеюсь, поможет

licensed under cc by-sa 3.0 with attribution.