首页 > 解决方案 > Android:无法更新 Firestore 中的文档字段

问题描述

我正在尝试在数据库事务中执行两个操作。

还检查了是否调用了成功侦听器,但未更新文档字段。文档引用的路径也是正确的。

database.runTransaction((Transaction.Function<Void>) transaction -> {

            message.createdAt = new Timestamp(new Date()); // just to be safe if the UI is not creating this.

            collRef.add(ModelMapper.prepareMessageModel(message)).addOnCompleteListener(task -> {

             // Added a new document in collection A

            });

            CollectionReference collRefConf = composer.composeConversationCollectionReference(conversationRequest);
            collRefConf.get(Source.SERVER).addOnCompleteListener(task -> {
                if (task.isSuccessful()) {
                    for (QueryDocumentSnapshot document : task.getResult()) {

                        // Updating an existing document in collection B

                        ConversationConfigRequest configRequest = new ConversationConfigRequest(message.conversationDocumentId,
                                document.getId());

                        DocumentReference configDocReference = composer.composeConversationConfigDocumentReference(configRequest);

                        configDocReference.update(
                                FirestoreConstants.ConversationProperties.ConversationConfig.LAST_MESSAGE, message.message
                        )
                                .addOnSuccessListener(aVoid -> {
                                    Log.d(Config.LOGTAG, "onSuccess: ");

                                })
                                .addOnFailureListener(e -> Log.d(Config.LOGTAG, "onFailure: "+e));
                    }
                }
            }).addOnFailureListener(e -> {
                Log.d("", "pullConversationConfigId: ");
            });

            return null;
        });

标签: androidgoogle-cloud-firestore

解决方案


如果整个对象将被更改,您可以尝试使用 set 来更新整个文档。还可以尝试使用 OncompleteListener 而不是 onSuccessListener 来查看任务是否正在完成

FirebaseFirestore.getInstance().collection().document(id)
    .set(yourObject).addOnCompleteListener{/*your code after completion here*/}

推荐阅读