首页 > 解决方案 > Google Cloud Firestore 触发数据库更改 BackgroundFunctions 未正确解析

问题描述

我正在尝试解析来自在数据库发生更改时运行的 Firestore 触发器的响应。我正在关注此文档:https ://cloud.google.com/functions/docs/calling/cloud-firestore 。在这种情况下,只是任何新条目,它位于“值”属性之下。我尝试使用 BackgroundFunction,因为 DocumentEventData 包含该对象中的所有字段,但这会引发日期序列化错误。

public class myFunction implements BackgroundFunction<DocumentEventData> {

    private static final Gson gson = new Gson();

    @Override
    public void accept(DocumentEventData payload, Context context) throws Exception {
        System.out.println("Event Received: " + payload);
    }
}

我收到以下错误:

Failed to execute com.ford.avllc.taas.statecoordinator.StateChangeProcessor
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 
Expected BEGIN_OBJECT but was STRING at path $.value.createTime

有没有办法通过 BackgroundFunction 类型解析它,而不必使用具有特定属性的 ObjectMapper?

我这么说是因为我正在做的解决方法是使用带有 RawBackgroundFunction 的对象映射器,它返回一个字符串,然后我通过 ObjectMapper 将其转换为 DocumentEventData。

编辑:具有讽刺意味的是,逐字逐句地遵循 Google 的文档会导致使用 GSON 得到相同的结果。

标签: javagoogle-cloud-firestoretriggersgcloud

解决方案


推荐阅读