Firebase文档创建-根据其他集合文档设置字段值,并在其他集合中创建新文档

时间:2019-12-21 10:48:05

标签: javascript firebase axios

我正在尝试创建一个firebase函数,该函数将创建我想要的文档,同时引用它所在的文档编号,并创建将链接到的另一个文档。

当前,我正在像这样创建文档。

exports.ClaimOnProject = (req, res) => {
  if (req.body.body.trim() === "")
    return res.status(400).json({ body: "Must not be empty" });

  const newClaim = {
    ProjectId: req.params.ProjectId,
    body: req.body.body,
    Progress: "new",
    createdAt: new Date().toISOString()
  };

  console.log(newClaim);

  db.doc(`/Project/${req.params.ProjectId}`)
    .get()
    .then(doc => {
      if (!doc.exists) {
        return res.status(404).json({ error: "Project not found" });
      }
      return doc.ref.update({ ClaimsCount: doc.data().ClaimsCount + 1 });
    })
    .then(() => {
      return db.collection("Claim").add(newClaim);
    })
    .then(() => {
      res.json(newClaim);
    })
    .catch(err => {
      console.log(err);
      res.status(500).json({ error: "Something went wrong" });
    });
};

这是一个项目下的声明。

我希望它还在索赔下方创建一个工作流,该工作流目前已以此创建。

exports.WorkflowOnClaim = (req, res) => {
  if (req.body.body.trim() === "")
    return res.status(400).json({ Workflows: "Must not be empty" });

  const newWorkflow = {
    body: req.body.body,
    createdAt: new Date().toISOString(),
    ClaimId: req.params.ClaimId
  };
  console.log(newWorkflow);

  db.doc(`/Claim/${req.params.ClaimId}`)
    .get()
    .then(doc => {
      if (!doc.exists) {
        return res.status(404).json({ error: "Claim not found" });
      }
      return doc.ref.update({ WorkflowsCount: doc.data().WorkflowsCount + 1 });
    })
    .then(() => {
      return db.collection("Workflow").add(newWorkflow);
    })
    .then(() => {
      res.json(newWorkflow);
    })
    .catch(err => {
      console.log(err);
      res.status(500).json({ error: "Something went wrong" });
    });
};

和项目邮政编码

exports.postOneProject = (req, res) => {
  if (req.body.Contract.trim() == "") {
    return res.status(400).json({ Contract: "Body must not be empty" });
  }

  const newProject = {
    Project: req.body.Project,
    userHandle: req.user.handle,
    Contract: req.body.Contract,
    createdAt: new Date().toISOString()
  };

  db.collection("Project")
    .add(newProject)
    .then(doc => {
      res.json({ message: `document ${doc.id} created successfuly` });
    })
    .catch(err => {
      console.error("Error while verifying token ", err);
      return res.status(403).json(err);
    });
};

我的想法是-引用项目文档的Claimcount字段为索赔创建一个新名称,而不是body字段。

然后创建工作流程文档,并将其ID作为字段链接回声明。

预先感谢,我将在解决过程中发布解决方案!

0 个答案:

没有答案
相关问题