【问题标题】:Uploading an Array to Firestore将数组上传到 Firestore
【发布时间】:2020-11-08 01:43:30
【问题描述】:

我正在尝试将一个数组从我的应用程序上传到 Firestone。但是,它继续显示

“firebaseError: function fieldvalue.arrayUnion()”使用无效数据调用。

这是我的代码:

    const finalList = this.state.players.map(player => {
        if(player.Present === true){
            return player.id
        }
    })
    finalList.map( id => 
        dbh.collection("Groups").doc(this.state.group)
        .collection('Enrolled').doc('ids').update({
        players: firebase.firestore.FieldValue.arrayUnion(id)
        })
    )

请注意,数据库中尚不存在数组“玩家”。

【问题讨论】:

  • 尝试将 id 和 player 括在括号中。类似(player) => {}(id)=>{}
  • 您好,感谢您的回复,很遗憾您的回复无效
  • 我假设 finalList 是 ids 的列表 - 为什么不简单地发送它而不是 map 函数?
  • dbh.collection("Groups").doc(this.state.group) .collection('Enrolled').doc('ids').update({ players: firebase.firestore.FieldValue.arrayUnion(finalList) })
  • 不幸的是,这会产生类似的错误“function.field value.arrayUnion() 调用无效数据。不支持嵌套数组。我相信在这种情况下,它会将其解释为将数组放置在数组播放器的元素。

标签: javascript reactjs firebase react-native google-cloud-firestore


【解决方案1】:

您的 id 变量似乎是一个 ID 数组,而 arrayUnion 函数需要一个可重复的变量。

要转换类型,可以使用...操作:

finalList.map( id => 
  dbh.collection("Groups").doc(this.state.group).collection('Enrolled').doc('ids').update({
    players: firebase.firestore.FieldValue.arrayUnion(...id)
  })
)

另外,更通用的是,您可以使用以下方式执行转换:

firebase.firestore.FieldValue.arrayUnion.apply(null, id); 

有关更多信息,请参阅 Gil 在此 post to the firebase-talk mailing list 中的回答。

【讨论】:

    【解决方案2】:

    您还可以使用我在相关 cmets 上讨论过的带有合并方法的集合

    除此之外你可以使用

       const finalList = this.state.players.map(player => {
            if(player.Present === true){
                return player.id
            }
        })
        dbh.collection("Groups").doc(this.state.group)
        .collection('Enrolled').doc('ids').update({
        players: firebase.firestore.FieldValue.arrayUnion(...finalList)
        })
    

    您可以从Matthew Rideout的回答中获取详细信息

    【讨论】:

      猜你喜欢
      • 2021-08-08
      • 2021-05-30
      • 2020-10-08
      • 2021-10-25
      • 2019-12-29
      • 2019-04-14
      • 2021-06-15
      • 1970-01-01
      • 2018-12-05
      相关资源
      最近更新 更多