seth.eeee
seth.eeee

Reputation: 519

Firebase function NodeJS throwing parsing error

I'm brand new to NodeJS and I am trying to deploy my first firebase function. I validate the following code online and it looks good but it keeps throwing a parse error when I try to deploy it. Where is my mistake?

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

exports.sendNotificationToFCMToken = functions.firestore.document('Chats/{ChatKeyId}/messages').onWrite(async(event) -> {
    const receiverId = event.after.get('receiverId');
    const senderId = event.after.get('senderId');

    const userRef = db.collection('Users');

    const receiverDoc = await.userRef.where('userId', '==', receiverId).get;
    if(receiverDoc.empty) {
        console.log('receiverDoc empty');
        return;
    }
    receiverDoc.forEach(doc => {
        const fcmToken = doc.fcmToken;
    });

    const senderDoc = await.userRef.where('userId', '==', senderId).get;
    if (senderDoc.empty) {
        console.log('senderDoc empty')
        return;
    }
    senderDoc.forEach(doc => {
        const name = doc.name;
    });

    const content = event.after.get('content');
    let userDoc = await admin.firestore().doc('users/${uid}').get();
    let fcmToken = userDoc.get('fcm');

    var message = {
        notification: {
            title: 'New Message',
            body: 'New message from ${name}',
        },
        token: fcmToken,
    }

    let response = away admin.messaging().send(message);
    console.log(response);
});

Upvotes: 0

Views: 38

Answers (1)

Luca Angioloni
Luca Angioloni

Reputation: 2253

I think you have a dot in the wrong place and you are missing parenthesis and other problems:

  • The get function of a firestore document should be get():

    // Wrong
    userRef.where('userId', '==', senderId).get;
    // Correct
    userRef.where('userId', '==', senderId).get();
    
  • Replace every occurrence of await. with await :

    // Wrong
    const receiverDoc = await.userRef.where('userId', '==', receiverId).get();
    // Correct
    const receiverDoc = await userRef.where('userId', '==', receiverId).get();
    
  • Use backticks for templating:

    let a = `users/${uid}`    // NOTE!!!!!!!! ` not ' or "
    
  • What do the forEach loops do?

Be careful and check your code again.

Upvotes: 1

Related Questions