通过自动生成的文档ID

时间:2018-03-19 10:45:55

标签: java android firebase google-cloud-firestore

我尝试使用Firebase Firestore在Android上创建Property Rental应用程序。现在,我正在尝试实现一种方法来删除Firestore中我的集合中的特定文档(属性)。我认为是通过引用该特定文档的自动生成的ID,但我根本无法绕过它。

这是删除功能的工作方式:

  1. 用户点击RecyclerView
  2. 中的属性项
  3. 显示property
  4. 的完整个人资料
  5. 用户点击右上角的删除按钮,然后从Firestore database
  6. 中删除该属性

    以下是我的代码:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    
        switch(item.getItemId()){
            // The delete button
            case R.id.action_delete_btn:
                // Do this when user clicks on delete button
                Toast.makeText(PropertyProfile.this, "You tried to delete this property", Toast.LENGTH_LONG).show();
    
                deleteItem(item.getOrder());
                return super.onOptionsItemSelected(item);
    
            default:
                return false;
        }
    }
    
    // Here's my problem
    private void deleteItem(int index) {
        firebaseFirestore.collection("Posts")
            .document("[DOCUMENT ID RIGHT HERE!]")
            .delete()
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    Toast.makeText(PropertyProfile.this, "You successfully deleted this property", Toast.LENGTH_LONG).show();
                }
            });
    }
    

1 个答案:

答案 0 :(得分:3)

要使用您要查找的文档ID,首先需要将其存储在变量中。将文档添加到数据库并且在不传递参数的情况下使用document()方法调用时,将生成唯一的ID。要获取该ID,您应该使用以下代码:

String documentId = postsRef.document().getId();
yourRef.document(documentId).set(yourModelObject);

postsRefCollectionReference集合的Posts对象,而yourModelObjectPost类的对象。我还建议您将该ID存储为Post文档的属性。

一旦你拥有了这个id,就可以在你的refence中使用:

firebaseFirestore
    .collection("Posts")
    .document(documentId)
    .delete().addOnSuccessListener(/* ... */);