簡體   English   中英

如何在 Firebase Firestore 中使用 arrayUnion() 將 object 推送到數組中?

[英]How to push an object in an array with arrayUnion() in Firebase 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"
}

我想在“submittedby”字段中推送 object,但出現錯誤。 我現在使用的代碼是:

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 object 或后跟可選前提條件的字段/值對的交替列表。 參數“dataOrField”的值不是有效的 Firestore 文檔。 無法序列化“FieldValueDelegate”類型的 object(在字段“submittedBy”中找到)。 Firestore 不支持具有自定義原型的 JavaScript 對象(即通過“new”運算符創建的對象)。

您正在混淆 Firestore SDK。 如果您使用 Admin SDK 進行更新,您還需要使用 Admin SDK 來指定 FieldValue 類型值。

而不是這個:

      submittedBy: firebase.firestore.FieldValue.arrayUnion(submittedAssignment)

用這個:

      submittedBy: admin.firestore.FieldValue.arrayUnion(submittedAssignment)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM