gpt4 book ai didi

javascript - FieldValue.arrayRemove() 不适用于字符串数组

转载 作者:行者123 更新时间:2023-12-02 21:14:49 26 4
gpt4 key购买 nike

我将用户的 Firebase 云消息注册 token 存储在 Firestore 用户集合中,每当我发送通知时,我都会删除未使用的 token 。我正在使用 admin sdk 在云功能上执行此操作。我正在使用的代码是-

let removeRegistrationTokens = async function (userId: string, tokens: string[]) {
await db.collection('users')
.doc(userId)
.update("tokens",admin.firestore.FieldValue.arrayRemove(tokens)
.catch(logError)
}

但这不起作用,并且没有从数组中删除任何值。我检查了标记数组,传递的值是正确的。如果我简单地将代码更改为

.update("tokens",admin.firestore.FieldValue.arrayRemove(tokens[0])

这是从 firestore 中的 tokens 数组中删除数组中的第一个元素。根据文档,它应该删除数组中传递给它的所有元素。

If your document contains an array field, you can use arrayUnion() and arrayRemove() to add and remove elements. arrayUnion() adds elements to an array but only elements not already present. arrayRemove() removes all instances of each given element.

有什么帮助可以解释为什么会发生这种情况吗?

最佳答案

arrayUnionarrayRemove 不接受数组参数。如果要传递多个值,则需要将它们指定为单独的参数。您可以尝试使用 JavaScript spread operator将该数组扩展为多个参数。

arrayRemove(...tokens)

另请参阅 arrayRemove 的 API 文档.

关于javascript - FieldValue.arrayRemove() 不适用于字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60999398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com