[英]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.