将文档推送到猫鼬模型数组中的子文档中

Posted

技术标签:

【中文标题】将文档推送到猫鼬模型数组中的子文档中【英文标题】:Push document into sub document in array of mongoose model 【发布时间】:2018-05-17 21:01:58 【问题描述】:

在我的公司架构中,我有一个已发布的工作,它是数组类型,将保存子文档

companySchema.js

PostedJobs : [
        JobName :  type: String, required : true,
        JobType :  type: String, required : true,
        JobLocation :  type: String, required : true,
        JobSalay:  type: String, required : true
    ],

在我的 /company 路线中,我通过模型中的Creatorentity 获取特定用户注册的所有公司

获取我使用的用户公司

  router.get('/',  isLoggedIn ,  function(req, res, next) 
    Company.find('Creator': req.user.id).then(function(companies) 
        res.render('Company',  "Companies" : companies );
    );
);

获得公司后,我想通过点击公司名称访问特定的公司页面(唯一)

router.get('/:name' , isLoggedIn , function(req , res , next) 
    var name = req.params.name;
    Company.findOne(Name : name).then(function(Company) 
         res.render('dashboard',
            "Company" : Company,
             errors : []
        );
    )
);

现在我想通过 POST 路线向这家特定公司发布工作 我的 req.body 由 JobName 、 JobType 、 JobLocation 和 JobSalary 组成,现在我已将它们分配给特定变量,我应该如何将此文档推送到数组

发布路线

router.post('/:name' , isLoggedIn , function(req , res , next) 
    var JobName = req.body.JobName;
    var JobType = req.body.JobType;
    var JobLocation = req.body.JobLocation;
    var Salary = req.body.Salary;
    //push this job to that specific comapny
);

【问题讨论】:

【参考方案1】:

我不知道你们公司的架构,但是如果你想给公司添加 PostedJobs,你应该在里面定义一个数组字段。

router.post('/:name' , isLoggedIn , function(req , res , next) 
    var JobName = req.body.JobName;
    var JobType = req.body.JobType;
    var JobLocation = req.body.JobLocation;
    var Salary = req.body.Salary;
    //push this job to that specific comapny
    // create the postedJob object
    var postedJob = JobName : JobName, JobType : JobType, JobLocation : JobLocation, JobSalay:Salary;
    // find the company in DB and add the postedJob to its array of postedJobs
    var name = req.params.name;
    Company.findOne(Name : name).then(function(company) 
        //modify and save the object received via callback
        company.postedJobs.push(postedJob);
        company.save();
    );
);

【讨论】:

我已经发布了数组类型的工作 PostedJobs : [ JobName : type: String, required : true, JobType : type: String, required : true, JobLocation : type: String, required : true, JobSalay: 类型:字符串,必需:true ],

以上是关于将文档推送到猫鼬模型数组中的子文档中的主要内容,如果未能解决你的问题,请参考以下文章

如何让猫鼬将一组 url 推送到数组子文档

将元素推送到猫鼬中的数组

只有在满足条件的情况下,有没有办法将子文档推送到 mongodb 数组中?

如何通过一次调用将一组对象推送到猫鼬中的数组中?

如何通过一次调用将一组对象推送到猫鼬中的数组中?

用打字稿中的子文档描述猫鼬模型