Я храню токены регистрации облачных сообщений Firebase для пользователей в коллекции пользователей firestore, и всякий раз, когда я отправляю уведомление, я удаляю токены, которые не используются. Я делаю это на облачной функции с администратором 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. Согласно документации, он должен удалить все элементы, переданные ему в массиве.
Если ваш документ содержит поле массива, вы можете использовать arrayUnion () и arrayRemove () для добавления и удаления элементов. arrayUnion () добавляет элементы в массив, но только элементы, которых еще нет. arrayRemove () удаляет все экземпляры каждого данного элемента.
Любая справка о том, почему это могло произойти?