Aks*_*ain 3 javascript firebase google-cloud-firestore
我将用户的 firebase 云消息传递注册令牌存储在 firestore 用户集合中,每当我发送通知时,我都会删除未使用的令牌。我正在使用 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)
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,并且没有从数组中删除任何值。我检查了标记数组,传递的值是正确的。如果我简单地将代码更改为
.update("tokens",admin.firestore.FieldValue.arrayRemove(tokens[0])
Run Code Online (Sandbox Code Playgroud)
这是从 firestore 中的 tokens 数组中删除数组中的第一个元素。根据文档,它应该删除数组中传递给它的所有元素。
如果您的文档包含数组字段,您可以使用 arrayUnion() 和 arrayRemove() 来添加和删除元素。arrayUnion() 将元素添加到数组中,但仅添加尚未存在的元素。arrayRemove() 删除每个给定元素的所有实例。
有什么帮助可以解释为什么会发生这种情况吗?
arrayUnion并且arrayRemove不接受数组参数。如果要传递多个值,则需要将它们指定为单独的参数。您可以尝试使用 JavaScript扩展运算符将该数组扩展为多个参数。
arrayRemove(...tokens)
Run Code Online (Sandbox Code Playgroud)
另请参阅arrayRemove的 API 文档。
| 归档时间: |
|
| 查看次数: |
2653 次 |
| 最近记录: |