I am a frontend developer working on some backend stuff in a private side project aka. I am signed up for trouble.
So this is my first cloud function. I am using typescript.
I want it to:
- Be called when a document is created in the collection [WORKS]
- Calculate the start of the day in GMT the document was uploaded on according to the time (type is timestamp) I add to the document when uploading it using the FieldValue.serverTimestamp() [WORKS]
- Count the number of documents which were created today and have the same id as the document we are calling the cloud function for [DOESN'T WORK]
Here's my code:
import * as functions from "firebase-functions";
import * as admin from "firebase-admin";
admin.initializeApp();
exports.countPrevious = functions.firestore
.document("entries/{documentId}")
.onCreate(async (snap, context) => {
try {
//Get current id
const id = snap.data().id;
//Calculate start and end of day the entry was uploaded on (in server time)
const startOfUploadDay = snap
.data()
.uploadFirestoreServerTimestamp.toDate()
.setUTCHours(0, 0, 0, 0);
//Query for all entries that happened for this id, today
const queryResult = await admin.firestore()
.collection("entries")
.where("id", "==", id)
.where("uploadFirestoreServerTimestamp", ">", startOfUploadDay)
.get();
const count = queryResult.size;
return snap.ref.update({ previousEntries: count });
} catch (error) {
return snap.ref.update({ status: 200 }); //200 is the code for cancelled
}
});
What am I doing wrong?
Also, is this the most efficient way of doing this? Is there a way I can just use the count() function?
Much love in advance.
Via Active questions tagged javascript - Stack Overflow https://ift.tt/c7G8lvS
Comments
Post a Comment