I'm encountering errors while attempting to create a simple cloud function that detects likes on the RD and then adds posts to a user's timeline.
How can I resolve this issue? What mistake am I making?
(The 2 errors below are from the Firebase Cloud Functions console)
onPostLike
Error fetching likers username: Error: Reference.update failed: First argument contains a function in property 'UserFYP.Bke7CYXP31dpyKdBGsiMOEov2q43.0PMdzaOyYBejf1Gh6Pk1RRA5WNJ2.postID.node_.children_.comparator_' with contents = function NAME_COMPARATOR(left, right) {
onPostLike
TypeError: Cannot read property 'get' of undefined at ServerResponse.json (/workspace/node_modules/express/lib/response.js:257:20) at ServerResponse.send (/workspace/node_modules/express/lib/response.js:158:21) at likerUIDRef.once.then.catch.error (/workspace/lib/index.js:669:52) at process._tickCallback (internal/process/next_tick.js:68:7)
Related TypeScript:
function addPersonalizedFYPPosts(whoLikes: string, postUID: string, postID: string) {
//need to use data to fetch my latest likes
//then I use the likers data to add the new post to his fypTimeline
const ref = admin.database().ref(`Likes/${postUID}/${postID}/media1`);
return ref.once("value")
.then(snapshot => {
//use snapshot to get the my latest like ??
//Now with this ssnapshot we see other people who liked the same post this liker has. get one of their UIDs and see what else they liked add that to thte likers timeline.
var i2 = 0
snapshot.forEach((theChild) => {
if (i2 == 0) {
let uid = theChild.key
//do what you want with the uid
//const userWhoAlsoLiked = snapshot.forEach
const likerUIDRef = admin.database().ref(`YourLikes/${uid}`);
likerUIDRef.once("value")
.then(snap =>{
//const username = snap.val()
var i = 0
snap.forEach((child) => {
//UserFYP
if (i == 0) {
let timelineID = child.key;
let timeStamp = child.child("timeStamp");
let newPostID = child.child("postID");
let postUid = child.child("uid");
//admin.database().ref(`UserFYP/${whoLikes}/${timelineID}/`).update(["":""])
admin.database().ref(`UserFYP/${whoLikes}/${timelineID}/`).set({"postID": newPostID, "uid": postUid, "timeStamp": timeStamp})
.then(slap =>{
console.log("Success updating user FYP: " )
return Promise.resolve();
})
.catch(error => {
console.log("Error fetching likers username: " + error)
response.status(500).send(error);
})
i++;
}
// return;
})
})
.catch(error => {
console.log("Error fetching likers username: " + error)
response.status(500).send(error)
})
return;
i2++;
}
})
})
.catch(error => {
console.log("The read failed: " + error)
response.status(500).send(error)
})
}
export const onPostLike = functions.database
.ref('/Likes/{myUID}/{postID}/media1/{likerUID}')
.onCreate((snapshot, context) => {
const uid = context.params.likerUID
const postID = context.params.postID
const myUID = context.params.myUID
//addNewFollowToNotif(uid, followerUID)
return addPersonalizedFYPPosts(uid,myUID,postID);
})