Как добавить несколько значений в одно и то же поле в Firestore - PullRequest
0 голосов
/ 27 мая 2018

Я пытаюсь добавить несколько изображений Uri в одно и то же поле в Firestore.

Screenshot of my firestore db.

Я пробовал несколько методов вместо добавления изображения Uris в одно и то же полеон создает несколько документов в хранилище огня.Мне нужна помощь.

 for (int i = 0; i < imageUris.size(); i++) {

        Toast.makeText(getApplicationContext(), "ROUND:" + i, Toast.LENGTH_SHORT).show();
        imgUri = imageUris.get(i);
        imageFilesPath = storageReference.child("Ads_images" + "/" + "Ad_" + UUID.randomUUID().toString() + ".jpg");

        imageFilesPath.putFile(imgUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
                if (task.isSuccessful() && task != null) {

                    LIST.add(task.getResult().getDownloadUrl().toString());
                    Log.e(TAG, "List inside"+LIST.size());

                    Map<String, Object> adMap = new HashMap<>();
                    adMap.put("user_id", user_id);
                    adMap.put("description", "Small description is shown here");
                    adMap.put("imageUris", Arrays.asList(LIST.get(0)));
                    firebaseFirestore.collection("Ads").add(adMap);
                }else {

                }
            }
        });

1 Ответ

0 голосов
/ 27 мая 2018

Каждый раз, когда вы вызываете add() для коллекции, Firestore создает новый документ.Поскольку теперь вы загружаете add() после загрузки каждого файла, вы получаете отдельный документ для каждого файла.Если вы хотите добавить свой URL в существующий документ, вы должны получить DocumentReference к этому документу и обновить его.

firebaseFirestore.collection("Ads").doc("v1ys3tyQ7vhHLD0ietAw").update(adMap);

Чтобы добавить URL в массив imageUris, вам необходимосначала загрузите текущее содержимое этого массива (чтобы определить, к какому индексу добавить элемент).Эта последовательность чтения-обновления несколько неэффективна в масштабе.Если это имеет значение для вашего приложения, вы можете рассмотреть возможность хранения URL-адресов на карте внутри документа или хранения их во вложенной коллекции под документом .

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