Node.js 我正在使用Nodejs/express+;mongoDB,我的http PUT请求不是';我一点也不经历

Node.js 我正在使用Nodejs/express+;mongoDB,我的http PUT请求不是';我一点也不经历,node.js,mongodb,express,Node.js,Mongodb,Express,因此,我正在学习赫尔辛基fullstack课程,这项任务是创建一个put请求,以更新联系人的电话号码,如果我们在字段中包含相同的姓名。但数字不同 我编写的所有请求都工作得很好,我正在本地测试它们,还使用postman和REST扩展来实现VScode。但是当我写这个put请求时,它甚至没有记录错误,就好像我没有调用它一样。当我在名称字段中写入名称时——如果名称已经存在于数据库中,它应该只更新我在数字字段中写入的数字,因此当我这样做时,什么也不会发生 const express = require(

因此,我正在学习赫尔辛基fullstack课程,这项任务是创建一个put请求,以更新联系人的电话号码,如果我们在字段中包含相同的姓名。但数字不同

我编写的所有请求都工作得很好,我正在本地测试它们,还使用postman和REST扩展来实现VScode。但是当我写这个put请求时,它甚至没有记录错误,就好像我没有调用它一样。当我在名称字段中写入名称时——如果名称已经存在于数据库中,它应该只更新我在数字字段中写入的数字,因此当我这样做时,什么也不会发生

const express = require("express");
const morgan = require("morgan");
const app = express();
const cors = require("cors");
const Contact = require("./models/contact");

app.use(cors());
app.use(express.json());
app.use(express.static("build"));

morgan.token("logger", (req, res) => {
  if (req.method === "POST") {
    return JSON.stringify(req.body);
  }
});

app.use(
  morgan(
    ":method :url :status :res[content-length] - :response-time ms :logger"
  )
);

//Handle errors for the HTTP requests
const errorHandler = (error, request, response, next) => {
  console.error(error)

  if (error.name === 'CastError') {
    return response.status(404).send({error: 'wrong id number'})
  }

  next(error)
}

//Logs the requests to the console
const requestLogger = (request, response, next) => {
  console.log("Method:", request.method);
  console.log("Path:  ", request.path);
  console.log("Body:  ", request.body);
  console.log("---");
  next();
};

app.use(requestLogger);

//add new posts to the database
app.post("/api/persons", (request, response) => {
  const body = request.body;

  if (!body.name || !body.number) {
    response.status(404).json({
      error: "content not found",
    });
  }

  const contact = new Contact({
    name: body.name,
    number: body.number,
  })

  contact.save().then((savedContact) => response.json(savedContact));
  
});

app.put('/api/persons/:id', (request, response, next) => {
  const body = request.body
  const id = request.params.id;
  const contact = {
    number: body.number
  }

  Contact.findByIdAndUpdate(id, contact, {new: true})
         .then(updatedContact => {
           response.json(updatedContact)
         })
         .catch(error => next(error))
  
})

//Instructions for the response if the /api/persons route is requested.
app.get("/api/persons", (request, response) => {
  Contact.find({}).then(result => response.json(result))
});
// If the /info route is requested
app.get("/info", (request, response) => {
  const inf = `<h1>Phonebook has info of ${Contact.length} People</h1>`;
  const tme = new Date().toUTCString();

  response.write(inf);
  response.write(`<h2>${tme}</h2>`);
  response.end();
});

// If the /api/persons/:id is requested
app.get("/api/persons/:id", (request, response) => {
  Contact.findById(request.params.id)
        .then(contact => response.json(contact))
});

//delete posts using the requested id
app.delete("/api/persons/:id", (request, response, next) => {
  Contact.findByIdAndRemove(request.params.id)
         .then(result => {
           response.status(204).end();
         })
         .catch(error => next(error))
});

const unknownEndpoint = (request, response) => {
  response.status(404).send({ error: "unknown endpoint" });
};

app.use(unknownEndpoint);
app.use(errorHandler);

const PORT = process.env.PORT;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
const mongoose = require('mongoose');


const url = process.env.MONGODB_URI;

console.log('connecting to the database', url);

mongoose
  .connect(url, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useFindAndModify: false,
    useCreateIndex: true,
  })
  .then((result) => {
    console.log("connected to MongoDB");
  })
  .catch((error) => {
    console.log("error connecting to MongoDB:", error.message);
  });

  const contactSchema = new mongoose.Schema({
    name: String,
    number: String
  });

  contactSchema.set('toJSON', {
    transform: (document, returnedObject) => {
      returnedObject.id = returnedObject._id.toString();
       delete returnedObject._id;
       delete returnedObject.__v;
    }
  });

  module.exports = mongoose.model('Contact', contactSchema);