首页 > 解决方案 > 除 getEmployees 外,所有其他路由都在工作,它显示“内部服务器错误!”

问题描述

我所有其他路线都工作正常,但是当我尝试从 db 获取员工时它不起作用,我尝试了不同的方法来获取我的员工,即在 app.js 中使用 app.get 方法并且它有效,但是当我尝试使用它带有控制器和路线,它甚至没有到达路线!请帮忙!谢谢你!

应用程序.js

const express = require('express')
const app = express();
const appUserRoute = require('./routes/appuserRoute')
const employeeRoute = require('./routes/employeeRoute')

require('./db/mongoose')
app.use(express.json())


if(process.env.NODE_ENV!=="production"){
    app.use(morgan('dev'))
}

app.use('/appusers',appUserRoute)


app.use('/appusers/employees',employeeRoute)


//start server
app.listen(PORT,
    console.log(`Server running in ${process.env.NODE_ENV } mode on port ${PORT}`.green)
)
   

员工路由.js

  const express = require('express')
const router = express.Router();
const {getEmployees, getEmployee, createEmployee, updateEmployee, deleteEmployee } = require('../controllers/employeeController')
router
.route('/')
.get(getEmployees)
.post(createEmployee)

router
.route('/:id')
.get(getEmployee)
.patch(updateEmployee)
.delete(deleteEmployee)


module.exports = router

员工控制器.js

const Employee = require('../Models/employee')
exports.getEmployees = async (req, res) => {
    try {
        const employees = await Employee.find({})
       if(!employees){
        res.status(404).json({
            message:'Not Data Found!'
        })
       }
        res.status(200).json({
            message:'Data Found!',
            data:employees
        })
    } catch (e) {
        res.status(500).send()
    }
}

猫鼬.js

const mongoose = require('mongoose')
mongoose.connect('mongodb://127.0.0.1:27017/MagicInventory-api', {
    useNewUrlParser: true,
    useCreateIndex: true,
    useFindAndModify: false,
    useUnifiedTopology: true
}).then(() => console.log("Connected".green))
.catch(err => console.log(err.red));

员工模型

const mongoose = require('mongoose');
var validator = require('validator');
const employeeSchema = new mongoose.Schema({
    firstName: {
        type: String,
        required: [true, 'please specify First Name'],
        trim: true,
        maxlength: [20, 'FirstName cannot be more than 20 characters!']
    },

    lastName: {
        type: String,
        trim: true,
        // maxlength: [20, 'lastName cannot be more than 20 characters!']
    },

    email: {
        type: String,
        trim: true,
        lowercase: true,
        // unique: true,
        // required: [true,'Email address is required'],
        // validate: {
        //     validator: validator.isEmail,
        //     message: 'invalid email',
        // }
    },

    maritalStatus: {
        type: String,
        // required:[true, 'Choose the Gender']
    },

    dateOfBirth: {
        type: Date,
        // required: [true, 'Date of Birth is required!']
    },

    profile: {
        type: String,
        lowercase: true
    },

    contactDetails: {
        adressLine1: {
            type: String
        },
        adressLine2: {
            type: String
        },
        city: {
            type: String
        },
        state: {
            type: String
        },
        zipCode: {
            type: Number
        },
        country: {
            type: String
        },
        contact: {
            type: Number,
            match: [
                /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/,
                'Phone number is not valid!'
            ]
        },
    },

    bankDetails:{
        bankName:{
            type:String,
        },
        accountNumber:{
            type:Number
        },
        accountName:{
            type:String
        },
        ifscCode:{
            type:String
        }

    },
    dateOfJoining:{
        type: Date,
    },

    createdAt: {
        type: Date,
        default: Date.now
    },


});


module.exports = mongoose.model('Employee', employeeSchema)

标签: node.jsexpressinternal-server-errorrestget-request

解决方案


问题已经解决了!我在写路线时犯了一个错误!实际路线应该是:- app.use('/employees',employeeRoute);


推荐阅读