GabrielJSW
GabrielJSW

Reputation: 244

Interacting with firebase firestore from firebase cloud functions

I am trying to interact with firebase firestore from my cloud function. The cloud functions looks like the following:

const admin = require("firebase-admin");
const functions = require("firebase-functions");
admin.initializeApp();
const db = admin.firestore();

exports.addVote = functions.https.onCall((data, context) => {
  return db
    .doc("sdd-enheter/enhet/votes/voteID")
    .set({ user: "user", vote: 0 });
});

When calling the function from the client side I get a firebase internal error, indicating that the function has been called but throws an error. What should I do to fix this?

Upvotes: 1

Views: 234

Answers (1)

slushy
slushy

Reputation: 12385

Your function needs to return a promise or otherwise terminate by throwing an https error. Throwing the https error will give the client back a relevant error that it can handle, so consider making that a habit. The function below covers both of those bases. If you still get an error then share that error with us as it appears in the console's function log.

exports.addVote = functions.https.onCall((_data, _context) => {
    const db = admin.firestore();

    try {
        return db.doc("sdd-enheter/enhet/votes/voteID").set({user: "user", vote: 0});
    } catch (error) {
        throw new functions.https.HttpsError("unknown", "Failed to add vote.", error);
    }
});

Upvotes: 1

Related Questions