我目前的文档如下:
{
"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"
}我想在'submittedBy‘字段中推送一个对象,但是我得到了一个错误。我现在使用的代码是:
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` });
});但我发现了这个错误
错误: Update()要么需要一个JavaScript对象,要么需要一个交替的字段/值对列表,然后是一个可选的先决条件。参数"dataOrField“的值不是有效的Fi还原文档。无法序列化类型为"FieldValueDelegate“的对象(在字段”submittedBy“中找到)。Firestore不支持带有自定义原型的JavaScript对象(即通过“新”操作符创建的对象)。
发布于 2020-08-02 21:39:37
你把Firestore混在一起了。如果使用Admin进行更新,还需要使用Admin指定FieldValue类型值。
而不是这样:
submittedBy: firebase.firestore.FieldValue.arrayUnion(submittedAssignment)用这个:
submittedBy: admin.firestore.FieldValue.arrayUnion(submittedAssignment)https://stackoverflow.com/questions/63221195
复制相似问题