Mongoose findOneAndUpdate 不更新也不抛出错误

Mongoose findOneAndUpdate don´t update and don´t throw an error

我在 mongodDB 集群上的数据库中存储了两个文档 。所以基本上一个电线杆就像一个用户团队。我想要的是每次当用户想要加入一个杆时,他的名字将被推入一个成员数组,所以我在 express 中创建了一个嵌套路由来执行此操作,结构将是 /poles/:poleid/adduser/:即使我尝试使用 $addToSet 而不是 $push,userid 和我也遇到了问题。所以我的问题是猫鼬不会抛出错误并且不会更新并且控制台日志“已成功修补极点”。

这是我的两个模型

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

const Pole = new Schema({
  name: {
    type: String,
    default: "",
  },
  members: [{
    id: {
        type: mongoose.Schema.Types.ObjectId,
        ref: "User"
    },
    username: String,
    role: String,
    joined : {
      type : Date,
      default : () => Math.floor(Date.now() / 1000)
    } ,
    approved : {
      type : Boolean,
      default : false
    }
}],
},
{ timestamps: true });

module.exports = mongoose.model("Pole", Pole);

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

const passportLocalMongoose = require("passport-local-mongoose");

const Session = new Schema({
  refreshToken: {
    type: String,
    default: "",
  },
});

const User = new Schema({
  firstName: {
    type: String,
    default: "",
  },
  lastName: {
    type: String,
    default: "",
  },
  email: {
    type: String,
    default: "",
  },
  authStrategy: {
    type: String,
    default: "local",
  },
  socialAccounts : [{
    type: String,
    default: "",
  }],
pole: {
       id:{
             type: mongoose.Schema.Types.ObjectId,
             ref: "Pole"
       },
       name: String,
  },
// many to many relationship 
Project: [{
  id:{
        type: mongoose.Schema.Types.ObjectId,
        ref: "Project"
  },
  name: String,
}],
Event: [{
  id:{
        type: mongoose.Schema.Types.ObjectId,
        ref: "Event"
  },
  name: String,
}],
Training: [{
  id:{
        type: mongoose.Schema.Types.ObjectId,
        ref: "Training"
  },
  name: String,
}],
Task: [{
  id:{
        type: mongoose.Schema.Types.ObjectId,
        ref: "Task"
  },
  name: String,
}],   
refreshToken: {
    type: [Session],
  },
},
{
 timestamps: {
    createdAt: 'created_at', // Use `created_at` to store the created date
    updatedAt: 'updated_at' // and `updated_at` to store the last updated date
  }
}
);
//Remove refreshToken from the response
User.set("toJSON", {
  transform: function (doc, ret, options) {
    delete ret.refreshToken;
    return ret;
  },
});

User.plugin(passportLocalMongoose);
module.exports = mongoose.model("User", User);


这是我的电线杆路线

var express = require('express');
var router = express.Router();
var addUserRouter = express.Router();
var Pole = require("../models/pole");
var User = require("../models/user");


addUserRouter.route("/:userid")
.put((req, res)=>{
  const poleid = req.poleid ;
  console.log(`pole id is fetched from server as ${poleid}`)
  const userid = req.params.userid ;
  console.log(`pole id is fetched from server as ${userid}`)
  let username = null;
  User.findOne({_id: userid}, (err, foundUser)=>{
    if(foundUser){
      console.log(`firstname is fetched from server as ${foundUser.firstName}`);
      console.log(`lastname id is fetched from server as ${foundUser.lastName}`);
      username = `${foundUser.firstName} ${foundUser.lastName}`
    }else{console.log("No username matching that id was found.");}
    
  });
  Pole.findOneAndUpdate(
    {id: poleid},
    {$push: { members: {
      id : req.params.userid,
      name : username,
      role : "member",
    } }},
    {useFindAndModify:false},
    (err)=>{
      (!err)? console.log("Successfully patched pole."):console.log(err);
      }
  );

});
router.use('/:poleid/adduser', (req, res,next) => {
  req.poleid = req.params.poleid;
  next();
},addUserRouter);

甚至当我尝试记录我的反应获取响应时,我什么也没有得到,当我停止服务器时,我得到了 PUT http://localhost:8081/poles/6267fce2a05b99e4fe4687eb/adduser/625f63a90b054a02b75a05a4/ net::ERR_CONNECTION_REFUSED

    fetch(process.env.REACT_APP_API_ENDPOINT + `poles/${poleid}/adduser/${userid}/`, {
      method: "PUT",
      headers: {
        "Content-Type": "application/json",
      },
    }).then(async (response) => {
       console.log(response);
       if (response.ok) {
         console.log("successfuly sent")
       } 
    }).catch(err => {
     <p>{err}</p>
   })

感谢你们的所有评论,这是我在 findOneAndUpdate id 中使用的过滤器而不是 _id,所以正确的形式是

Pole.findOneAndUpdate(
{_id: poleid},
{$push: { members:...