尽管给出了字段输入,但 Postman 的验证错误
Validation error on Postman though field inputs are given
正在制作 RESTful API 并且按预期工作。我正在使用 postman 和 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;
Inputs are given but it doesn't takes it as one
请询问是否需要更多信息...
您正在向您的路由器发送数据,但没有先进行解析。
// Calling Router
app.use(studentRouter);
// Middleware
app.use(express.json());
这应该是另一种方式
// Middleware
app.use(express.json());
// Calling Router
app.use(studentRouter);
正在制作 RESTful API 并且按预期工作。我正在使用 postman 和 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;
Inputs are given but it doesn't takes it as one
请询问是否需要更多信息...
您正在向您的路由器发送数据,但没有先进行解析。
// Calling Router
app.use(studentRouter);
// Middleware
app.use(express.json());
这应该是另一种方式
// Middleware
app.use(express.json());
// Calling Router
app.use(studentRouter);