我正在尝试将请求发送给邮递员,但它给了我一个错误。nodemon 正在工作并且服务器正在终端中运行
index.server.js 文件
//jshint esversion:6
const express = require("express");
const env = require("dotenv");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const app = express();
//routes
const userRoutes = require('./routes/user');
env.config();
mongoose.connect(`mongodb+srv://${process.env.MONGO_DB_USER}:${process.env.MONGO_DB_PASSWORD}@cluster0.igfgf61.mongodb.net/${process.env.MONGO_DB_DATABASE}?retryWrites=true&w=majority`,{
// useNewUrlParser: true,
// useUnifiedTopology:true,
// useCreateIndex : true
}).then(() => {
console.log("database connected");
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use('./api/', userRoutes);
app.listen(process.env.PORT, () => {
console.log(`server is running successfully on ${process.env.PORT}`);
});
routes/user.js 文件
//jshint esversion:6
const express = require("express");
const { signup } = require("../controller/user");
const router = express.Router();
router.post('/signup', signup);
router.post('/signin', (req, res) => {
});
module.exports = router
models/user.js 文件
//jshint esversion:6
const mongoose = require("mongoose");
const bcrypt = require('bcrypt');
const userSchema = new mongoose.Schema(
{
firstName: {
type: String,
required: true,
trim: true,
min: 3,
max: 20
},
lastName: {
type: String,
required: true,
trim: true,
min: 3,
max: 20
},
username: {
type: String,
required: true,
trim: true,
unique: true,
index: true,
lowercase: true
},
email: {
type: String,
required: true,
trim: true,
unique: true,
lowercase: true
},
hash_password: {
type: String,
required: true,
},
role: {
type: String,
enum: ['user', 'admin'],
default: 'user'
},
contactNumber: {type: String},
profilePicture: {type: String},
}
,{timestamps: true});
userSchema.virtual('password')
.set(function(password){
this.hash_password=bcrypt.hashSync(password, 10);
});
userSchema.methods= {
authenticate: function(password){
return bcrypt.compareSync(password, this.hash_password);
}
}
module.exports = mongoose.model('User', userSchema);
控制器/user.js文件
//jshint esversion:6
const User = require("../models/user");
exports.signup =(req, res) => {
User.findOne({email: req.body.email})
.exec((error, user) => {
if(user) return res.status(400).json({
message: 'user already registered'
});
const {
firstName,
lastName,
email,
password
} =req.body;
const _user = new User({
firstName,
lastName,
email,
password,
username: Math.random().toString()
});
_user.save((error, data) => {
if(error){
return res.status(400).json({
message: 'something went wrong'
});
}
if(data){
return res.status(201).json({
message: 'user created succesfully'
});
}
});
});
}
当我尝试发布请求时,它给了我一个错误。我应该怎么办? 这是我在邮递员中提出的请求,它给了我一个错误(https://i.sstatic.net/Qsn5V.png)
在你的index.server.js中使用“/api”而不是“./api/”
app.use("/api", userRoutes)
解决方案: 在routes/user.js文件中: router.post('/signup',signup)更改为router.post('/',signup)
移动到 server.js 文件: app.use('./api/', userRoutes);更改为 app.use('./api/sigup', userRoutes);或者你可以尝试这个也都会 工作 app.use("/api", userRoutes)