【问题标题】:updating relative schema in mongodb using nodejs使用nodejs更新mongodb中的相对模式
【发布时间】: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 }
     );
};

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

【问题讨论】:

    标签: node.js mongodb express mongoose mongodb-query


    【解决方案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并放入受让人查询

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 2020-07-19
      • 2015-11-10
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多