Integromat同步数据至Google Firestore无法存储数组问题求助
问题描述
我正在尝试使用Integromat将数据同步到Google Firestore,但始终找不到将数组保存为指定字段取值的正确方法,本应很简单的操作目前所有尝试均失败。
场景示例
最简场景下我有如下输入JSON:
输入JSON:{ "Brand": "Ford", "widgets": [0,1,2] }
我希望将其按原结构存入Firebase,但无法正确配置「Update Firestore Document」模块。目前我最多只能将数组转为字符串存储,Firestore中最终存储结果如下:
Firestore输出:{ "Brand": "Ford", "widgets": "0,1,2" }
当我尝试直接传入数组时,会收到报错:"Array of objects expected in the parameter 'Value'"
解决方案
出现该报错的核心原因是Integromat的Firestore更新模块默认对数组类型的参数做了对象类型校验,你传入的是纯数值/字符串这类基础类型组成的数组,不符合默认校验规则,所以要么被自动转成字符串存储,要么直接抛出类型错误。可以用下面两种方法解决:
方法一:加Map模块处理数组格式
- 在「Update Firestore Document」模块前新增一个「Transform」分类下的「Map」模块
- 将上游输出的
widgets数组作为Map模块的输入数组,不需要配置任何字段映射规则,直接输出映射后的结果 - 回到Firestore更新模块的字段配置页,将
widgets字段的Value类型选择为「Array」,直接传入Map模块输出的数组即可正常存储
方法二:用JSON模式传入完整文档
如果方法一不生效,可以直接跳过单字段配置,用完整JSON传入的方式实现:
- 新增一个「Set Variable」模块,构造完整的文档结构,直接保留数组的原生格式:
{ "Brand": "Ford", "widgets": [0,1,2] }
- 在Firestore更新模块中,选择输入模式为「JSON」,将上面构造的变量作为输入,更新方式选择「覆盖指定字段」或者「替换整个文档」,即可完整保留数组结构存入Firestore,不会被自动转成字符串。
内容的提问来源于stack exchange,提问作者Richard Soluis
相关产品推荐
相关产品推荐

