Я хочу сохранить альбом изображений в базе данных и хранилище Firebase - PullRequest
0 голосов
/ 26 октября 2019

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

Я хочу создать это

 btnSubmit.setOnClickListener(v -> {
        if (edtTitle.getText().toString().isEmpty()){
            Toast.makeText(this, "Please Enter Title", Toast.LENGTH_SHORT).show();
        } else {

  final String gelleryId =FirebaseFirestore.getInstance().
  collection("Gallery").document(edtTitle.getText().toString()).getId();              

            progressDialog.setTitle("Uploading...");
            progressDialog.show();
            for(int i =0; i<arrayList.size(); i++){
                StorageReference mStorageRef = FirebaseStorage.getInstance().getReference();
                final StorageReference patientiamge = mStorageRef.child("Gallery").child(gelleryId).child(System.currentTimeMillis() + ".jpg");
                patientiamge.putFile(arrayList.get(i))
                        .addOnSuccessListener(taskSnapshot -> {
                            if (taskSnapshot.getTask().isComplete()) {
                                patientiamge.getDownloadUrl().addOnSuccessListener(uri -> {
                                    final String imageid = FirebaseFirestore.getInstance().collection("Gallery").document().getId();

                                    GelleryListModel gelleryListModel = new GelleryListModel();
                                    gelleryListModel.setId(imageid);
                                    gelleryListModel.setAlbumName(edtTitle.getText().toString());
                                    gelleryListModel.setImagePath(uri.toString());
                                    gelleryListModel.setBranchId(String.valueOf(branchId));
                                    Log.e("@@ImageId", imageid);
                                    FirebaseFirestore.getInstance().collection("Gallery").document("").collection(edtTitle.getText().toString()).document().set(gelleryListModel).addOnCompleteListener(task -> {
                                        if (task.isSuccessful()) {
                                            progressDialog.dismiss();
                                            finish();

                                        } else {
                                            Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show();
                                        }
                                    });
                                });
                            }
                        })
                        .addOnFailureListener(exception -> {
                        });
            }

Я хочу создать каксначала название коллекции, чем название альбома, а затем путь к изображению. Я понятия не имею, как это сделать, и я не знаю, возможно это или нет. У меня есть все записи, но не так, как я хотел.

1 Ответ

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

Использовать имя альбома в качестве идентификатора документа в вашей коллекции Gallery очень просто:

FirebaseFirestore.getInstance().collection("Gallery").document(edtTitle.getText());

Однако я рекомендую не использовать пользовательский ввод для имени вложенной коллекции. Не существует API на стороне клиента для получения списка (под) коллекций, поэтому лучше использовать имена коллекций, которые есть в вашем коде.

Я не уверен, для какой цели служит этот подколлекция, но если этоимеет идентифицируемую цель, обычно вы называете коллекцию после этой цели (например, image_ids), а затем называете документы с динамическим значением, которое вы имели в виду.

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