【发布时间】:2020-07-14 21:15:38
【问题描述】:
我将用户的 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)
}
但这不起作用,并且没有从数组中删除任何值。我检查了令牌数组,传递的值是正确的。如果我只是将代码更改为
.update("tokens",admin.firestore.FieldValue.arrayRemove(tokens[0])
这是从 firestore 中的 tokens 数组中删除数组中的第一个元素。根据文档,它应该删除数组中传递给它的所有元素。
如果您的文档包含数组字段,您可以使用 arrayUnion() 和 arrayRemove() 来添加和删除元素。 arrayUnion() 将元素添加到数组中,但只添加不存在的元素。 arrayRemove() 删除每个给定元素的所有实例。
关于为什么会发生的任何帮助?
【问题讨论】:
标签: javascript firebase google-cloud-firestore