上传一个数组到Firestore
上传一个数组到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日
看起来你的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邮件列表的帖子中的答案。
你也可以使用我在评论中讨论过的集合合并方法。
除此之外,你还可以使用
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的答案中获取详细信息。