【发布时间】:2021-04-09 08:19:48
【问题描述】:
我想从我的 Firestore 数组中删除多个元素:
var eliminatedThisRound = []
for (const player in players){
if (players[player].eliminated === false && players[player].answer !== answer) {
eliminatedThisRound.push(players[player].uid);
}
}
var update = {
roundFinished: true,
nextRound: date.valueOf() + 12000,seconds
players: updatedPlayers,
remainingPlayers: admin.firestore.FieldValue.arrayRemove(eliminatedThisRound)
}
await t.update(gameRef, update);
以上返回此错误:
transaction failure: Error: Element at index 0 is not a valid array element. Nested arrays are not supported.
所以如果我知道这些值就好了,因为我可以这样做:
remainingPlayers: admin.firestore.FieldValue.arrayRemove("player1", "player2")
但是我还没有找到使arrayRemove()的参数动态化的方法。
有什么想法吗?
【问题讨论】:
-
据我所知,您应该能够为
arrayRemove传递多个值:firebase.google.com/docs/reference/js/… 和firebase.google.com/docs/reference/js/…。当你传递多个值时会发生什么?有错误信息吗? -
是的,没错——但我的价值观是动态的。我试图传入一个包含多个值的数组(上面的代码中的
eliminatedThisRound) - 但是它返回了这个错误:Element at index 0 is not a valid array element. Nested arrays are not supported. -
啊,那条错误信息是有道理的(请在以后立即包含该信息)。 Renaud 答案中的扩展运算符应该使该错误消失。
标签: node.js firebase google-cloud-platform google-cloud-firestore google-cloud-functions