Как добавить HashMap к документу в базе данных? - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь добавить HashMap, «участвующий», в документ .collection («Users»). (User_id), и кажется, что .add () не работает с этим, поэтому я использовал .set (), однакоон стирает все ранее сохраненные данные в документе (user_id).

Как я могу просто добавить поля в документ, а не переписывать весь документ в этом случае?

attending.put(ID,a);

firebaseFirestore.collection("Events").document(ID).collection("Users").add(userMap).addOnCompleteListener(new OnCompleteListener<DocumentReference>() {
    @Override
    public void onComplete(@NonNull Task<DocumentReference> task) {


        //Toast.makeText(eventRegistration.this, "User Stores", Toast.LENGTH_SHORT).show();
    }
});

firebaseFirestore.collection("Users").document(user_id).set(attending).addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
        Toast.makeText(eventRegistration.this, "Registered Successfully", Toast.LENGTH_SHORT).show();
    }
});

1 Ответ

0 голосов
/ 10 октября 2019

Использование add () в CollectionReference. всегда создает новый документ со случайным идентификатором. Вызов set () для DocumentReference перезапишет документ, но вы можете изменить это, передав второй аргумент типа SetOptions , который говорит о слиянии новых данных с существующими данными - просто вызовите SetOptions.merge () , чтобы передать этот объект. update () всегда будет пытаться обновить существующий документ.

Тот факт, что вы пытаетесь обновить карту, не меняет способ работы любого из этих методов.

Все эти операции также обсуждаются в документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...