В Parse открепление объектов из локального хранилища данных также удаляет объекты, на которые они указывают?

В документации Parse SDK указано, что закрепление объекта, указывающего на другой объект, также закрепит этот целевой объект:https://parse.com/docs/android_guide#localdatastore-pin

Как и при сохранении, здесь рекурсивно сохраняются все объекты и файлы, на которые указывает gameScore, если они были получены из облака. Всякий раз, когда вы сохраняете изменения в объекте или получаете новые изменения из Parse, копия в хранилище данных будет автоматически обновляться, поэтому вам не нужно об этом беспокоиться.

Однако в нем не указано, как позже открепить первый объект, а также любые объекты, на которые он указывает? (по сути, отменить транзакцию) вместе с удалением этих объектов из облака?

Не могли бы вы:

A.) открепите все объекты, которые ссылаются на первый объект, затем используйте DeleteEventually, чтобы удалить целевой объект

or

Б.) сначала открепить все объекты, что затем автоматически удалит целевой объект?

Кроме того, если объект закреплен в хранилище данных, но также сохраняется в облаке (никогда не открепляется), удаляется ли он также из облака при откреплении? или его нужно сначала либо открепить, а затем удалить, либо удалить/открепить?

ИЗМЕНИТЬ:

Если я понимаю ответ Фоско, мне нужно сделать что-то вроде следующего:

final ParseQuery<ParseObject> findMoves = ParseQuery.getQuery("bjjMatchMoves");
findMoves.fromPin("BJJMove");
findMoves.findInBackground(new FindCallback<ParseObject>() {

    @Override
    public void done(final List<ParseObject> moves, final com.parse.ParseException e) {

    if (e == null) {

    // First, unpin all objects that reference the main object, which should Remove the main object as well.
    ParseObject.unpinAllInBackground("BJJMove", moves, new DeleteCallback() {
        public void done(ParseException e) {
        if (e != null) {
            // There was some error.
            return;
        }
        // objects have Now been unpinned. Now Delete them from the cloud

        ParseObject.deleteAllInBackground(moves, new DeleteCallback() {
            public void done(ParseException e) {
                if (e != null) {
                    // There was some error.
                    return;
                }

                // objects have Now been unpinned and deleted, remove the main object from the cloud
            }
        });
        }
    });
    }
    }
});

person Evan R.    schedule 21.07.2014    source источник


Ответы (1)


Итак, обо всем по порядку... открепление не приведет к удалению объекта из "облака". Он просто удалит локально кэшированную версию.

Во-вторых, да, если вы открепите корневой объект, который ссылается на другие объекты, другие объекты также будут откреплены (если только они не были закреплены отдельно).

Если вы хотите удалить объект, вы должны удалить его, что также должно открепить его.

person Fosco    schedule 21.07.2014
comment
Фоско, можешь проверить правку, чтобы убедиться, что ты говоришь об этом? Если я вас правильно понял, и используя примеры разбора, скажем, я закрепляю 5 комментариев, которые указывают на один пост. Если я откреплю все комментарии, это открепит пост. Затем я могу удалить комментарии и пост из облака. - person Evan R.; 22.07.2014
comment
Спасибо за подтверждение. Ответ принят. Спасибо за помощь! - person Evan R.; 23.07.2014
comment
@Fosco Поддерживает ли API метод полной очистки локального хранилища данных? По какой-то причине мне трудно открепить мои объекты, и я еще не нашел причину, но если я могу выполнить команду для удаления всех объектов в хранилище данных независимо от значения вывода, это было бы идеальным решением для меня. - person cYrixmorten; 18.02.2015
comment
Нет, я так не думаю, но вы можете выполнить запрос по имени класса, а затем отменить вывод всех результатов. - person Fosco; 19.02.2015
comment
Справка stackoverflow.com/questions/29465802/ - person DogCoffee; 15.06.2015