node.js - 使用 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
谢谢
解决方案
- 您
app
在需要库之前初始化您的实例express
,它应该是:
const express = require("express")
const app = express()
- 您缺少
json
和urlencoded
中间件
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
use
您应该使用该功能设置路线
app.use('/', router)
- 您应该添加
cors
中间件
const cors = require('cors')
app.use(cors())
推荐阅读
- javascript - 单击“添加新行”按钮后将行添加到另一个表
- powershell - 更改 csv 文件中的日期时间格式 - 批处理脚本/Powershell
- angular - 如何从 PKS 入口控制器访问托管 Angular 应用程序的 Nginx
- ios - iOS 使用 Photolibrary API,如何获取名为“from my mac”的相册照片(从我的 mac 转换而来)
- scala - Scala:HashSet 交集
- marklogic - cts:values 函数不返回路径引用的所有值
- c++ - 字符串中的十六进制 NULL
- javascript - 我尝试创建一个新命令(addrole),一切正常。然而
- python - 无法从“werkzeug.http”导入名称“dump csp header”
- javascript - TypeError:无法读取未定义的属性“客户端”