My current document looks like this:
{
"assignmentName": "OS Assignment-2",
"dueDate": "10 August",
"createdAt": "2020-08-02T20:27:28.916Z",
"maxMarks": 10,
"facutyName": "Dr. Muskan Gupta",
"semester": "3",
"submittedBy": [
{
"studentName": "Test name",
"downloadUrl": "URL"
},
{
"downloadUrl": "URL3",
"studentName": "Test name2"
},
{
"downloadUrl": "https://downloadthisfile.com",
"studentName": "Nakshatra Saxena"
},
{
"studentName": "Hello Bortehr",
"downloadUrl": "httpsav"
}
],
"program": "CSE",
"subject": "Operating System with UNIX"
}
I want to push an object in the 'submittedBy' field but I get an error. The code I'm using right now is:
const submittedAssignment = {
studentName: req.body.studentName,
downloadUrl: req.body.downloadUrl,
};
admin
.firestore()
.collection("assignments")
.doc(req.params.assignmentId)
.update({
submittedBy: firebase.firestore.FieldValue.arrayUnion(submittedAssignment)
});
})
.then(() => {
return res
.status(201)
.json({ message: `Assignment submitted successfully` });
})
.catch((err) => {
console.error(err);
res.status(500).json({ error: `Error submitting assignment` });
});
But I'm getting this error
Error: Update() requires either a single JavaScript object or an alternating list of field/value pairs that can be followed by an optional precondition. Value for argument "dataOrField" is not a valid Firestore document. Couldn't serialize object of type "FieldValueDelegate" (found in field "submittedBy"). Firestore doesn't support JavaScript objects with custom prototypes (i.e. objects that were created via the "new" operator).