簡體   English   中英

推送到 Mongoose 子文檔

[英]Push To Mongoose Subdocuments

您好,我正在創建一系列分組來描述某些用戶在幫助客戶的背景下所扮演的角色。 Prospect model中的object被稱為caseworkers。 在 caseworkers 中是一系列 arrays 用於完成不同類型的角色。 等式是允許用戶將他的信息作為稱為 CaseWorker 的子文檔推送。 基本上創建一個 object 和用戶可以推送到的 6 個 arrays。 我嘗試了一些事情並選擇了子文檔。 任何幫助都是極好的。

這是我的代碼:

const mongoose = require("mongoose");
const CaseWorker = require("./CaseWorker");

const ProspectSchema = mongoose.Schema({


  caseWorkers: {
    originators: [CaseWorker.schema],
    loanProcessors: [CaseWorker.schema],
    documentProcessors: [CaseWorker.schema],
    upsells: [CaseWorker.schema],
    primaryReso: [CaseWorker.schema],
    taxPreparers: [CaseWorker.schema],
    secondaryReso: [CaseWorker.schema],
  }
module.exports = mongoose.model("prospect", ProspectSchema);

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const CaseWorkerSchema = new Schema({
  name: {
    type: String,
    required: true,
  },
  email: {
    type: String,
    required: true,
    unique: true,
  },
  role: { type: String },
  resoCred1: { type: String },
  resoCred2: { type: String },
  reminders: [
    {
      _id: { type: mongoose.Schema.Types.ObjectId, ref: "User" },
      userReminded: { type: mongoose.Schema.Types.ObjectId },
      reminderDate: { type: Date },
      reminderDueDate: { type: Date },
      status: { type: String },
      daysTilDue: { type: Number },
      id: { type: String },
      text: { type: String },
      clientId: { type: mongoose.Schema.Types.ObjectId, ref: "Prospect" },
    },
  ],
});

module.exports = mongoose.model("caseWorker", CaseWorkerSchema);


router.put("/:_id/caseWorkers/loanProcessors", auth, async (req, res) => {
  const prospect = await Prospect.findByIdAndUpdate(req.params._id, {
    "$push": {
      "loanProcessors": {
        "caseWorker": {
          "name": req.body.name,
          "email": req.body.email,
          "role": req.body.role,
          "resoCred1": req.body.resoCred1,
          "resoCred2": req.body.resoCred2,
        },
      },
    },
  });

  res.json(prospect);
  console.log(prospect);
});

在您更新文檔時的方法中,您將loanProcessors放在caseWorker下,但它在模式中以相反的方式聲明。

要更新嵌套的 object,您必須使用點符號來引用該字段。

不要忘記將表示字段的 object 鍵作為字符串表示,例如"caseWorkers.loanProcessors" ,因為caseWorkers.loanProcessors在 ZDE9B9ED78D7E2E1DCEEFFEE780E2F91 中是無效的 object 鍵

    "$push": {
      "caseWorkers.loanProcessors": {
        "name": req.body.name,
        "email": req.body.email,
        "role": req.body.role,
        "resoCred1": req.body.resoCred1,
        "resoCred2": req.body.resoCred2,
      },
    },

暫無
暫無

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

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