【发布时间】:2021-05-14 21:18:30
【问题描述】:
我正在努力让这个 axios 调用正常工作。它在密码重置功能中,它调用一个发送到后端的 axios 请求,但它只是出现错误而不是执行路由器路由中的代码。
我在这里调用这个块中的请求。
前端:
async componentDidMount() {
const {
match: {
params: { token },
},
} = this.props;
try {
const response = await axios.get('http://localhost:5000/api/users/reset', {
params: {
resetPasswordToken: token,
},
});
console.log(response)
if (response.data.message === 'password reset link a-ok') {
this.setState({
username: response.data.username,
updated: false,
isLoading: false,
error: false,
});
}
} catch (error) {
console.log(error.response.data);
this.setState({
updated: false,
isLoading: false,
error: true,
});
}
}
它正在获取正确的令牌和所有内容,但是 http://localhost:5000/api/users/reset 应该指向下面代码中的 /reset 路由,并且从未到达。
const express = require("express");
const router = express.Router();
const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");
const keys = require("../../config/keys");
const validateRegisterInput = require("../../validation/register");
const validateLoginInput = require("../../validation/login");
const nodemailer = require('nodemailer');
const crypto = require('crypto');
require('dotenv').config();
const User = require("../../models/User");
router.route('/reset').get((req, res, next) => {
User.find({
where: {resetPasswordToken: req.query.resetPasswordToken,
resetPasswordExpires: {
$gt: Date.now(),
},
},
}).then(user => {
if(user == null) {
console.log('password reset link is invalid or has expired');
res.json('password reset link is invalid or has expired');
}else{
res.status(200).send({
username: user.username,
message: 'password reset link a-ok',
});
}
});
});
module.exports = router;
【问题讨论】:
-
你能添加完整的路由代码和它给出的错误吗?
-
哦,哎呀!我想这个错误会有所帮助哈哈。错误:CastError: Cast to ObjectId failed for value "reset" at path "_id" for model "users" 并且完整的路由基本上就在那里。 users.js 文件中还有许多其他路由,其中包含所有路由,但它们都是单独工作的,只是这一个不会出于任何原因。
-
唯一不是另一条路线的是顶部的东西。我会将其添加到原始问题中。谢谢@TamasSzoke
标签: axios react-router