首页 > 解决方案 > 使用 req.params.id 获取未定义

问题描述

我想在 mongodb 中通过节点和快递从数据库中获取 id。

问题是通过使用req.params.id我在我的 vs 代码控制台中变得未定义。我有console.log(id)......所以基本上我想更新我的用户数据。所以我在获取 id 时遇到了问题。

我已经尝试了各种以前的问题,但他们没有帮助

应用程序.js

const express = require("express")
const app = express()
const mongoose = require("mongoose")
const cors = require('cors');
const env = require("dotenv")


const port = 5000
env.config({path: "../server/config.env"})
require("../server/db/conn")
app.use(cors());
app.use(express.json())
app.use(require("../server/router/Auth"))
app.use(require("./router/schoolAuth"))


app.use(express.json())
app.use(express.urlencoded({ extended: true }))


app.listen(port, (err) => {
    if (err) {
        return console.error(err);
    }
    return console.log(`server is listening on ${port}`);
});
// require("./db/conn")
// app.use(express.json())



// //we link the router files to make our link easy
// app.use(require("./router/Auth"))


auth.js

let fs = require("fs-extra");
const app = express()
const BlogPost = require("../model/userSchema")
const express = require("express")
const router = express.Router()
require("../db/conn")
const TECAHER = require("../model/teacherSchema")
const User = require("../model/userSchema")



router.route('/register/:id').get(function (req, res) {
    let id = req.params.id;
    console.log(id);
    User.findById(id, function (err, student) {
        res.json(student);
    });
});




router.route('/updateuser/:id').post(function (req, res) {
    User.findById(req.params.id, function (err, userdata) {
        if (!userdata)
            return res.status(402).send("no found")
        else {
            userdata.names = req.body.names;
            userdata.phone = req.body.phone;
          

            User.findByIdAndUpdate(variable._id, variable).then( emp => {
                res.json('Employee Updated Successfully');
              }
            );
        }
    });
});

前端

class Admin extends Component {
    constructor(props) {
        super(props);
        this.onChangenames = this.onChangenames.bind(this);
        this.onChangephone = this.onChangephone.bind(this);
        this.onSubmit = this.onSubmit.bind(this);

        this.state = {
            names: "",
            phone: "",
        };
    }

    componentDidMount() {
        axios
            .get('http://localhost:3000/register/' + this.props.match.params.id)
            .then((response) => {
                this.setState({
                    names: response.data.names,
                    phone: response.data.phone,
                });
            })
            .catch(function (error) {
                console.log(error);
            });
    }




    onChangenames(e) {
        this.setState({
            names: e.target.value,
        });
    }

    onChangephone(e) {
        this.setState({
            phone: e.target.value,
        });
    }

    onSubmit(e) {
        e.preventDefault();
        const obj = {
            names: this.state.names,
            phone: this.state.phone,
        };
        
        axios.post('http://localhost:3000/updateuser/' + this.props.match.params.id, obj)
            .then((res) => console.log(res.data)).catch((err) => {
                console.log(err);
            });

        this.props.history.push("/");
    }

    render() {
        return (
            <>
                <header class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow">
                    <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3" href="#">..........

所以我在哪里或者有没有其他方法从数据库中获取 id

谢谢

标签: node.jsexpress

解决方案


  1. app在需要库之前初始化您的实例express ,它应该是:
const express = require("express")
const app = express()
  1. 您缺少jsonurlencoded中间件
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
  1. use您应该使用该功能设置路线 
app.use('/', router)
  1. 您应该添加cors中间件
const cors = require('cors')
app.use(cors())

推荐阅读