使用nodejs更新mongodb中的相对模式

Posted

技术标签:

【中文标题】使用nodejs更新mongodb中的相对模式【英文标题】:updating relative schema in mongodb using nodejs 【发布时间】:2021-11-12 22:23:39 【问题描述】:

我正在尝试更新在第一个架构中引用的第二个架构

projectSchema.js

var projectSchema = Schema(
    pname     : String,
    description     : String,
    assignee :  
                  type: Schema.Types.ObjectId,
                  ref: 'Assignment'
                
);
var Project = mongoose.model('project', projectSchema);

assigneeSchema.js

var assigneeSchema = Schema(
    assigneeName  : String,
    grade  : String,
    startDate : Date,
    endDate   : Date
);
var Assignee  = mongoose.model('Assignment', shopSchema);

所以我正在尝试像这样更新我的架构

const update = async (req, res) => 
  const  id  = req.params;
  let update = ;
  let updateAssignee=;
  if (req.body.pname) update.pname = req.body.pname;
  if (req.body.description) update.description = req.body.description;
  if (req.body.assignee.assigneeName) updateAssignee.assignee.assigneeName = req.body.assignee.assigneeName;
  if (req.body.assignee.grade) updateAssignee.assignee.grade = req.body.assignee.grade;

   let newProject = new Project.updateOne(
      projectId: id ,
      
        $set: update,
      ,
       runValidators: true 
     );

   let newAssignee = new Assignee.updateOne(
      projectId: id ,
      
        $set: updateAssignee,
      ,
       runValidators: true 
     );
;

我正在尝试更新商店,但它无法正常工作,我不知道我错在哪里

【问题讨论】:

【参考方案1】:
const update = async (req, res) => 
  const  id  = req.params;
  let update = ;
  let updateAssignee=;
  if (req.body.pname) update.pname = req.body.pname;
  if (req.body.description) update.description = req.body.description;
  if (req.body.assignee.assigneeName) updateAssignee.assignee.assigneeName = req.body.assignee.assigneeName;
  if (req.body.assignee.grade) updateAssignee.assignee.grade = req.body.assignee.grade;

   let newProject = new Project.findOneAndupdate(
      projectId: id ,
      
        $set: update,
      ,
       runValidators: true,returnOriginal: false 
     );

   let newAssignee = new Assignee.updateOne(
      _id: newProject.assignee ,
      
        $set: updateAssignee,
      ,
       runValidators: true 
     );
;

/// 使用 findOneAndUpdate 后会返回新对象,获取受让人ID并放入受让人查询

【讨论】:

以上是关于使用nodejs更新mongodb中的相对模式的主要内容,如果未能解决你的问题,请参考以下文章

nodejs实践-MongoDB

在后端使用NodeJS的Put方法不更新Angular7中的MongoDB

如何更新数组NodeJS,MongoDB中的特定对象

如何将数据推送到nodejs mongodb中的另一个模式

MongoDB 通知文档更新

mongodb的作品目录