Когда использовать указатель и когда использовать ParseRelation в этом примере

Я изо всех сил стараюсь держать вещи прямо для примера chatRoom, над которым я работаю.

Дано: UserA UserB ChatRoom01

В этом примере, когда UserA входит в ChatRoom01, я хочу создать связь между ними. Теперь, так как ChatRoom01 уже существует, я могу получить объект, выполнив:

ParseQuery<ParseObject> query = ParseQuery.getQuery("ChatRoom");
        query.getInBackground(getIntent().getStringExtra("chatRoom"), new GetCallback<ParseObject>() {
            @Override
            public void done(ParseObject chatRoom, ParseException e) {
                if(e == null){
                    // we found the object
                    myChatRoom = chatRoom;
                    // set the activity's title
                    setTitle(myChatRoom.getString("name"));
                }else{
                    // aww sh!t. can't find it
                }
            }
        });

Если бы я использовал указатель, я бы сделал что-то вроде:

myChatRoom.put("member", ParseUser.getCurrentUser());

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

myChatRoom.remove("member");

удалит член ассоциации из комнаты. Это не то, что я хочу сделать. Как бы я это сделал?

Если окажется, что указатели являются идеальным решением здесь, когда UserB входит в chatRoom, я буду следовать тем же шагам, что и когда UserA вошел в комнату. Но сделав это, я не перезаписал бы информацию об участнике UserA с UserB? ParseRelation кажется, что это был бы лучший выбор, потому что я могу добавлять / удалять пользователей; однако, поскольку может быть более 100 пользователей, у меня складывается впечатление, что указатели - это путь. Я открыт для предложений о том, как справиться с этим.

Альтернативой может быть подписка на канал при входе и отмена подписки при выходе. Это звучит замечательно, но я не уверен, как проверить, подписаны ли они уже.

1 ответ

Решение

Похоже, вы хотите использовать ParseRelation.

Для добавления в отношение используйте:

ParseRelation<ParseObject> relation = myChatRoom.getRelation("members");
relation.add(ParseUser.getCurrentUser());

Чтобы удалить отношение, используйте:

relation.remove(ParseUser.getCurrentUser());

Документация:

Руководство по отношениям

Справочник по API

Другие вопросы по тегам