正在制作 RESTful API 并按預期作業。我正在使用郵遞員和 mongodb,并提出解決問題的請求。但是現在只有 Delete 和 Get 請求有效,Update 和 create 請求回傳這些“欄位是必需的”,盡管它們不是空的。在我添加路由器之前,這一切正常。
const express = require("express");
require("./db/conn");
const Student = require("./models/students");
const studentRouter = require("./routers/stds");
// Environment Variables
const app = express();
const port = process.env.PORT || 8000;
// Calling Router
app.use(studentRouter);
// Middleware
app.use(express.json());
// Listening to port
app.listen(port, () => {
console.log(`Connection at ${port}`);
});
// Creating Router
const express = require("express");
const router = new express.Router();
const Student = require("../models/students");
// Creating URLs
router.get("/", (req, res) => {
res.send("Hello World");
});
// Creating data
router.post("/students", async (req, res) => {
try {
const user = new Student(req.body);
const createUser = await user.save();
console.log(createUser);
res.status(201).send(createUser);
} catch (e) {
res.status(400).send(e);
}
});
// Reading data
router.get("/students", async (req, res) => {
try {
const studentsData = await Student.find();
if (!studentsData) {
return res.status(404).send();
} else {
res.send(studentsData);
}
} catch (e) {
res.send(e);
}
});
// Reading data using IDs
router.get("/students/:id", async (req, res) => {
try {
const _id = await req.params.id;
const studentData = await Student.find({ _id });
res.send(studentData);
} catch (e) {
res.status(500).send(e);
}
});
// Update Student's Data by ID
router.patch("/students/:id", async (req, res) => {
try {
const _id = req.params.id;
const updateStudents = await Student.findByIdAndUpdate({ _id },
req.body,
{
new: true
});
res.send(updateStudents);
} catch (e) {
res.status(400).send(e);
}
});
// Delete Student's Data by I
router.delete("/students/:id", async (req, res) => {
try {
const id = req.params.id;
const deleteStudent = await Student.findByIdAndDelete({ id });
if (!id) {
return res.status(400).send();
}
else {
res.send(deleteStudent);
}
} catch (e) {
res.status(500).send(e);
}
})
module.exports = router;
我的架構檔案。
const mongoose = require("mongoose");
const validator = require("validator");
const studentSchema = new mongoose.Schema({
name: {
type: String,
required: true,
minlength: 3
},
email: {
type: String,
required: true,
unique: [true, "Already Exists"],
validate(value) {
if (!validator.isEmail(value)) {
throw new Error("Invalid Email")
}
}
},
phone: {
type: Number,
minlength: 10,
required: true,
unique: true
},
address: {
type: String,
required: true
}
});
// creating new collection using model
const Student = new mongoose.model("Student", studentSchema);
module.exports = Student;
給出了輸入,但它不把它當作一個
請詢問是否需要更多資訊...
uj5u.com熱心網友回復:
您將資料發送到路由器,而沒有先對其進行決議。
// Calling Router
app.use(studentRouter);
// Middleware
app.use(express.json());
這應該是相反的
// Middleware
app.use(express.json());
// Calling Router
app.use(studentRouter);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/374084.html
標籤:javascript 节点.js 表达 猫鼬 api设计
