Nak*_*ena 2 node.js express firebase google-cloud-firestore
我当前的文档如下所示:
{
"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"
}
Run Code Online (Sandbox Code Playgroud)
我想在“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` });
});
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误
错误:Update() 需要单个 JavaScript 对象或可以后跟可选前提条件的字段/值对交替列表。参数“dataOrField”的值不是有效的 Firestore 文档。无法序列化“FieldValueDelegate”类型的对象(在“submittedBy”字段中找到)。Firestore 不支持具有自定义原型的 JavaScript 对象(即通过“new”运算符创建的对象)。
您正在混淆 Firestore SDK。如果您使用 Admin SDK 进行更新,您还需要使用 Admin SDK 来指定 FieldValue 类型值。
取而代之的是:
submittedBy: firebase.firestore.FieldValue.arrayUnion(submittedAssignment)
Run Code Online (Sandbox Code Playgroud)
用这个:
submittedBy: admin.firestore.FieldValue.arrayUnion(submittedAssignment)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
524 次 |
| 最近记录: |