Node.js 我正在使用Nodejs/express+;mongoDB,我的http PUT请求不是';我一点也不经历
因此,我正在学习赫尔辛基fullstack课程,这项任务是创建一个put请求,以更新联系人的电话号码,如果我们在字段中包含相同的姓名。但数字不同 我编写的所有请求都工作得很好,我正在本地测试它们,还使用postman和REST扩展来实现VScode。但是当我写这个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(
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);