TypeError:.splice云功能

时间:2018-05-30 13:03:14

标签: javascript firebase google-cloud-firestore google-cloud-functions

我试图在javascript中为Google firestore编写云端功能。它需要循环注册令牌并删除不必要的那些我认为我有大部分代码,但由于某种原因,它不喜欢我在一个数组上调用splice,我不是一个javascript开发人员,这让我感到困惑,我会在这里发布整个剧本,因为它不是很大,任何帮助都很受欢迎

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

exports.notifyNewMessage = functions.firestore.document
('users/{ID}/contacts/{contactID}/messages/{messageID}')
    .onCreate((docSnapshot , context) => {
         const message = docSnapshot.data()
         const recipientId = message['recipientId']
         const senderId = message['sender']
         const senderName = message['senderName']

         return admin.firestore().doc('users/' + recipientId + 
                                      "/token/token").get().then(userDoc =>{
    const registrationTokens = userDoc.get('token')
    const notificationBody = (message['data_type'] === "TEXT") ? message['message'] : "You received a new mage message."
    const payload = {
        notification : {
            title : senderName + "sent you a message.",
            body : notificationBody,
            clickAction : "MessageListActivity"
        },
        data : {
            USER_NAME : senderName,
            USER_NUMBER : message['sender']
        }
    }

    return admin.messaging().sendToDevice(registrationTokens,payload).then(response => {
        const stillRegisteredTokens = registrationTokens



        response.results.forEach((result , index) => {
            const error = result.error
            if(error){
                const  failedRegistrationToken = registrationTokens[index]
                console.error('failed token ', failedRegistrationToken, error)
                if(error.code === 'messaging/invalid-registration-token' 
                || error.code === 'messaging/registration-token-not-registered')
                {   const failedIndex = stillRegisteredTokens.indexOf(failedRegistrationToken)
                    if(failedIndex > -1){
                        stillRegisteredTokens.splice(failedIndex, 1)
                    }
                }
            }
        })

        return admin.firestore().doc("users" + recipientId + "token" + "token").update({
            registrationTokens : stillRegisteredTokens
        })

    })
})
})

0 个答案:

没有答案