上传一个数组到Firestore

10 浏览
0 Comments

上传一个数组到Firestore

我正尝试从我的应用上传一个数组到Firestone。然而,它一直显示

\"firebaseError: function fieldvalue.arrayUnion()\" called with invalid data.

下面是我的代码:

    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)
        })
    )

请注意,数组“players”尚未存在于数据库中。

admin 更改状态以发布 2023年5月21日
0
0 Comments

看起来你的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在这个firebase-talk邮件列表的帖子中的答案

0
0 Comments

你也可以使用我在评论中讨论过的集合合并方法。

除此之外,你还可以使用

   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的答案中获取详细信息。

0