как написать код, который вызвал вашу базу данных потомком для firebase - PullRequest
0 голосов
/ 28 октября 2019

В моей базе данных есть таблица Product, а внутри дочернего продукта - другая таблица, представляющая собой FK таблицы Product. И ПК таблицы Product - это pro_id.

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

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

key=getIntent().getExtras().get("key").toString();

        firebaseAuth = FirebaseAuth.getInstance();
        databaseReference = FirebaseDatabase.getInstance().getReference("Product").child(key);
        mStorageRef= FirebaseStorage.getInstance().getReference();
 Product product = new Product(id,pname,pcategory,pprice,downloadUrl.toString());
                                    databaseReference.child("Product").child("").child(id).setValue(product) //table and primary key

это код для добавления продукта

private void createProduct(){

        if(CropImageUri !=null){

            final String id = databaseReference.push().getKey();
            final StorageReference ref = mStorageRef.child("images").child(id + "." +getFileExtension(CropImageUri));

            mUploadTask = ref.putFile(CropImageUri)//save image into storage reference
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot task) {

                            Toast.makeText(getApplicationContext(),"Upload Successful",Toast.LENGTH_LONG).show();
                            //get url from the storage reference and assign to uri
                            ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                                @Override
                                public void onSuccess(Uri uri) {
                                    Uri downloadUrl = uri;

                                    String name = pro_name.getText().toString().trim();
//                                    String description = pro_desc.getText().toString().trim();
                                    String price = pro_price.getText().toString().trim();
                                    String category = pro_category.getSelectedItem().toString();
                                    String imgurl = downloadUrl.toString();

                                    Product product = new Product(id,name,price,imgurl,category);
                                    databaseReference.child("Product").child(key).child(id).setValue(product) //table and primary key
                                            .addOnCompleteListener(new OnCompleteListener<Void>() {
                                                                       @Override
                                                                       public void onComplete(@NonNull Task<Void> task) {
                                                                           if (task.isSuccessful()) {
                                                                               Toast.makeText(AddProductActivity.this, "Add Successfully", Toast.LENGTH_SHORT).show();
                                                                               finish();
                                                                               Intent intent = new Intent(AddProductActivity.this, BrandActivity.class);
                                                                               intent.putExtra("pro_id", id);
                                                                               startActivity(intent);
                                                                           } else {
                                                                               Toast.makeText(AddProductActivity.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
                                                                           }
                                                                       }
                                                                   }
                                            );
                                }
                            });
                        }

                    })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Toast.makeText(getApplicationContext(),"Failed",Toast.LENGTH_SHORT).show();
                        }

                    })
                    .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {

                        }
                    });

        }else{
            Toast.makeText(getApplicationContext(), "No file selected", Toast.LENGTH_SHORT).show();
        }
    }

это мой адаптер продукта


        Picasso.with(context).load(productList.get(i).getPro_image()).into(myViewHolder.image);
        myViewHolder.name.setText(productList.get(i).getPro_name());
        myViewHolder.category.setText(productList.get(i).getPro_category());
        myViewHolder.price.setText(productList.get(i).getPro_price());

        myViewHolder.itemView.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
//                String key1 = brandList.get(i).getBrand_id();
                String key = productList.get(i).getPro_id();
                String name = productList.get(i).getPro_name();
                String category= productList.get(i).getPro_category();
                String price = productList.get(i).getPro_price();
                String image = productList.get(i).getPro_image();

                Intent intent = new Intent(context, updateProduct.class);
//                intent.putExtra("key1",key1);
                intent.putExtra("key",key);
                intent.putExtra("pro_name",name);
                intent.putExtra("pro_category",category);
                intent.putExtra("pro_price",price);
                intent.putExtra("pro_image",image);
                context.startActivity(intent);
            }
        });

    }

и я не знаю, какчтобы ссылаться на этот «ключ» внутри моей страницы обновления продукта

1 Ответ

1 голос
/ 28 октября 2019

.child("") должен содержать ключ ссылку на коллекцию продуктов.

 Product product = new Product(id,pname,pcategory,pprice,downloadUrl.toString());
                                databaseReference.child("Product").child("p1").child(id).setValue(product)
...