向邮递员发送请求,但出现错误

问题描述 投票:0回答:2

我正在尝试将请求发送给邮递员,但它给了我一个错误。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

javascript node.js express mongoose postman
2个回答
1
投票

在你的index.server.js中使用“/api”而不是“./api/”

app.use("/api", userRoutes)

0
投票

解决方案: 在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)

© www.soinside.com 2019 - 2024. All rights reserved.