将数组上传到 Firestore

Posted

技术标签:

【中文标题】将数组上传到 Firestore【英文标题】:Uploading an Array to 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() 调用无效数据。不支持嵌套数组。我相信在这种情况下,它会将其解释为将数组放置在数组播放器的元素。 【参考方案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的回答中获取详细信息

【讨论】:

以上是关于将数组上传到 Firestore的主要内容,如果未能解决你的问题,请参考以下文章

快速多部分/表单数据上传,将字符串数组附加到正文(问题:数组作为字符串到服务器)

成功将文件上传到MySQL中的字节数组,但是下载时内容不可读

Angular + core 如何将文件数组从 Angular 上传到 Dot Net Core

android 怎么上传一个String数组

使用JavaScript将具有数组的JSON文件上传到不同的选项卡中

使用 alamofire multipart 上传图像数组