Ankish Gangwar
Ankish Gangwar

Reputation: 23

Error occurred while parsing your function triggers

The following error is shown while deploying firebase function. I tried initializing the firebase functions. I also double-checked the index.js file. I'm new to deploying firebase functions so please help me for the same.

index.js is as follows:

const functions = require('firebase-functions');

                                                                 // replaces keywords with emoji in the "text" key of messages
                                                                 // pushed to /messages
exports.emojify =
    functions.database.ref('/messages/{pushId}/text')
    .onWrite(event => {
                                                                 // Database write events include new, modified, or deleted
                                                                 // database nodes. All three types of events at the specific
                                                                 // database path trigger this cloud function.
                                                                 // For this function we only want to emojify new database nodes,
                                                                 // so we'll first check to exit out of the function early if
                                                                 // this isn't a new message.

                                                                 // !event.data.val() is a deleted event
                                                                 // event.data.previous.val() is a modified event
        if (!event.data.val() || event.data.previous.val()) {
            console.log("not a new write event");
            return;
        }

                                                                 // Now we begin the emoji transformation
        console.log("emojifying!");

                                                                 // Get the value from the 'text' key of the message
        const originalText = event.data.val();
        const emojifiedText = emojifyText(originalText);

                                                                 // Return a JavaScript Promise to update the database node
        return event.data.ref.set(emojifiedText);
    });

                                                                 // Returns text with keywords replaced by emoji
                                                                 // Replacing with the regular expression /.../ig does a case-insensitive
                                                                 // search (i flag) for all occurrences (g flag) in the string
function emojifyText(text) {
    var emojifiedText = text;
    emojifiedText = emojifiedText.replace(/\blol\b/ig, "😂");
    emojifiedText = emojifiedText.replace(/\bcat\b/ig, "😸");
    return emojifiedText;
}

Upvotes: 1

Views: 356

Answers (1)

Please check the current documentation on triggers, and specifically on migration from Beta to Version 1.0 .

event.data.previous.val() has changed to change.before.val()

event.data.val() has changed to change.after.val()

Also, the Promise statement changes to: return change.after.ref.parent.child('text').set(emojifiedText);

The complete index.js looks like:

const functions = require('firebase-functions');

// replaces keywords with emoji in the "text" key of messages
// pushed to /messages

exports.emojify=
	functions.database.ref('/messages/{pushId}/text')
	.onWrite((change,context)=>{
		
		// Database write events include new, modified, or deleted
        // database nodes. All three types of events at the specific
        // database path trigger this cloud function.
        // For this function we only want to emojify new database nodes,
        // so we'll first check to exit out of the function early if
        // this isn't a new message.
		
		// Only edit data when it is first created.		
		if (change.before.exists()){
			return null;
		}
		
		// Exit when the data is deleted.
		if (!change.after.exists()){
			return null;
		}
		
		// Now we begin the emoji transformation
		console.log("emojifying!");
		
		//Get the value from the 'text' key of the message
		const originalText = change.after.val();
		const emojifiedText = emojifyText(originalText);

		//Return a JavaScript Promise to update the database nodeName
		return change.after.ref.parent.child('text').set(emojifiedText);
	});
	
// Returns text with keywords replaced by emoji
// Replacing with the regular expression /.../ig does a case-insensitive
// search (i flag) for all occurrences (g flag) in the string

function emojifyText(text){
	var emojifiedText=text;
	emojifiedText=emojifiedText.replace(/\blol\b/ig,"😂");
	emojifiedText=emojifiedText.replace(/\bcat\b/ig,"😸");
	return emojifiedText;
}

Upvotes: 2

Related Questions