1

概述 - 我正在尝试使用 Integromat 将一些数据同步到 google firestore。但是,我似乎找不到将数组保存为特定字段的输出的正确方法。看起来这应该很容易,但到目前为止我尝试过的一切都失败了。

例如,使用最简单的形式,我有一个像这样的输入字符串

输入 JSON: { "Brand": "Ford", "widgets": [0,1,2] }

而且我基本上只是想将其以相同的结构保存到 firebase 中,但我似乎无法正确配置“更新 Firestore 文档”模块。我能做的最接近的是将它保存为字符串,所以它在 firebase 中看起来像这样:

输出 Firestore:{ "Brand": "Ford", "widgets": "0,1,2" }

下面我附上了 integromat 设置的图像,展示了我如何尝试将输出值连接到 firestore 模块。当我尝试直接传递数组时,我收到错误消息。“参数‘值’中预期的对象数组”

00 - integromat 中的基本 2 节点设置

01 - 在 integromat 中输入 json

02 - 输入模块的输出

03 - 保存为字符串

04 - 设置为存储为数组不起作用

05 - 错误信息

10 - 所需的输出示例

11 - 到目前为止的实际输出,在firestore中保存为字符串

4

1 回答 1

0

我已经查看了您的集成,需要修复的一件事是您通过 Integromat 在 Google Cloud FireStore 中传递值数组的方式。在查看 API 时,FireStore 的预期格式如下所示,

{
    "fields": {
        "widgets": {
            "arrayValue": {
                "values": [
                    {
                        "integerValue": 0
                    },
                    {
                        "integerValue": 1
                    },
                    {
                        "integerValue": 2
                    }
                ]
            }
        },
        "brand": {
            "stringValue": "Ford"
        }
    }
}

但是,由于该应用程序是在 Integromat 中开发的,因此在您使用 Map 而不是在 Firestore Array 中设置每个项目时几乎没有更改。在审查之后,Integromat 期望具有以下字段的对象作为您需要创建和传递的数组,而不是widgets[]像您在当前实现中所做的那样使用。

[
  value : 0,
  valueType : "integerValue"
]

为了实现这一点,我创建了以下场景(不确定操作效果如何,但我得到了它的工作), 在此处输入图像描述

使用的数据结构如下,您可以通过生成器使用它并用于聚合器和解析 JSON 模块,

[{
    "value": 0,
    "valueType": "integerValue"
}, {
    "value": 1,
    "valueType": "integerValue"
}, {
    "value": 2,
    "valueType": "integerValue"
}]

最后第二步中的数组聚合器将聚合 value 和 valueType 并将在 Google FireStore 中用作,

在此处输入图像描述

于 2021-08-31T22:38:26.993 回答