首页 > 解决方案 > 当用户单击卡片时,是否可以使用一种方法来修改 Firestore 中的特定文档?

问题描述

大家,早安。我在这里有一个问题,当用户点击 Android 应用程序内的卡片时,有没有一种方法可以用来修改“用户”集合中的一个文档?我尝试使用下面的代码,但似乎没有意义。

我的想法是当用户单击 1 个事件时,它会显示事件的详细信息,并且有 1 个按钮可供单击,以便 eventID 可以存储在当前用户的文档中。这里有人可以回答我的问题吗?谢谢你。

数据库结构

//当特定事件卡被点击时:

    joinBtn.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v) {
            FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
            CollectionReference collRef= rootRef.collection("users");

            //the eventDocID is saved in user's "save_event".

            collRef.document().update("saved_event", a.eventDocId).addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull @NotNull Task<Void> task) {
                   Log.d(TAG, "onComplete");
                }
            });
        }
    });`

标签: javaandroidfirebasegoogle-cloud-firestore

解决方案


为了执行更新,您需要指定要更新的文档的 ID。因此,您必须将“pJbM8gfwHiuJUP8R4320”传递给 document() 方法并像这样调用 update():

Map<String, Object> update = new HashMap<>();
update.put("eventDocId", "newID");
DocumentReference docId = collRef.document("pJbM8gfwHiuJUP8R4320");
docId.update("saved_event", update).addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull @NotNull Task<Void> task) {
        Log.d(TAG, "Update complete.");
    }
});

推荐阅读