当用户单击忘记密码以重置电子邮件时,我试图发送邮件。但我得到了这个错误。对于 /users等其他帖子请求, /auth其正常工作。但对于密码重置帖子请求,它在邮递员中给出了不能发布错误。index.js文件
import express from "express";
import cors from "cors";
import mongoose from "mongoose";
import bodyParser from "body-parser";
import dotenv from "dotenv";
dotenv.config();
import userRoutes from "./routers/users.js";
import authRoutes from "./routers/auth.js";
import resetPasswordRoutes from "./routers/passwordReset.js";
const app = express();
// middlewares
app.use(express.json());
app.use(bodyParser.json({ extended: true }));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors());
// routes
app.use("/api/users", userRoutes);
app.use("/api/auth", authRoutes);
app.use("api/password-reset", resetPasswordRoutes);
const PORT = process.env.PORT || 5000;
const URL = process.env.URL;
console.log(process.env.BASE_URL);
//connect to mongodb atlas
mongoose
.connect(URL, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => {
console.log("Connected to mongoDB Atlas successfully");
app.listen(PORT, () =>
console.log("Server is listening on the port " + PORT)
);
})
.catch((err) => console.log(err.message));
路由器/密码Reset.js
import express from "express";
import { passwordReset } from "../controllers/passwordReset.js";
import { passwordResetRequest } from "../controllers/passwordReset.js";
const router = express.Router();
router.post("/", passwordReset);
router.post("/:userId/:token", passwordResetRequest);
export default router;
控制器/密码Reset.js
import User from "../models/user.js";
import Token from "../models/token.js";
import sendMail from "../utils/sendEmail.js";
import Joi from "joi";
import crypto from "crypto";
import dotenv from 'dotenv';
dotenv.config();
export const passwordReset = async (req, res) => {
console.log(req.body);
try {
console.log(req.body);
const schema = Joi.object({
email: Joi.string().email().required(),
});
const { error } = schema.validate(req.body);
console.log(req.body);
if (error) return res.status(400).send({message: error.details[0].message});
const user = await User.findOne({ email: req.body.email });
if (!user)
return res.status(400).send({message: "user with given email doesn't exist"});
let token = await Token.findOne({ userId: user._id });
if (!token) {
token = await new Token({
userId: user._id,
token: crypto.randomBytes(32).toString("hex"),
}).save();
}
const link = `${process.env.BASE_URL}/password-reset/${user._id}/${token.token}`;
await sendMail(user.email, "password reset", link);
res.send({message:"password reset link has sent to your email account."});
} catch (err) {
res.send({message:"An error occurred"});
console.log(err);
}
};
export const passwordResetRequest = async (req, res) => {
try {
const schema = Joi.object({ password: Joi.string().required() });
const { error } = schema.validate(req.body);
if (error) return res.status(400).send(error.details[0].message);
const user = await User.findById(req.params.userId);
if (!user) return res.status(400).send("Invalid link or expired");
const token = await Token.findOne({
userId: user._id,
token: req.params.token,
});
if (!token) return res.status(400).send("Invalid link or expire");
user.password = req.body.password;
await user.save();
await token.delete();
res.send("password reset successfull");
} catch (err) {
res.send("An error occured");
console.log(err);
}
};
邮递员请求发送url-http://localhost:5000/api/password-邮递员重置错误-无法发布/api/密码重置,404找不到任何人帮助我解决此错误
我认为这是你的路线字符串中的一个拼写错误丢失的
app.use("api/word-resetPasswordRoutes", resetPasswordRoutes);
应该是
<代码>应用程序。使用(“/api/密码重置”,resetPasswordRoutes)
我正在用python运行下面的代码 我每次都会遇到下面的错误-有人能帮忙吗! OpenCV错误:未指定的错误(该函数未实现。使用Windows、GTK 2.x或Carbon支持重建库。如果您在Ubuntu或Debian上,请安装libgtk2.0-dev和pkg config,然后重新运行cmake或configure脚本),位于cvShowImage、file/Users/travis/buil
问题内容: 我正在使用邮递员与elasticsearch服务器进行通信,当我尝试与我的elasticsearch服务器连接时,我在邮递员中收到错误消息。我哪里出问题了?这是我的代码。 我已尝试与服务器通信,但我一直收到此错误 问题答案: 好像您使用的是Elasticsearch 7.0版。由于Elasticsearch每个索引不再支持一种以上的映射类型,因此不再需要映射名称,并且此版本中不应提供该
我有一个非常基本的webApi构建/运行(相当模板应用程序,仅此而已),以便遵循一个培训视频。GET和DELETE调用工作正常,PUT和POST给出400错误。诚然,对所有这些都很新,所以我正在寻找一些基本的方向,关于如何排除故障。相关的屏幕截图如下,我很高兴提供其他要求。提前谢了。
我正在尝试使用Postman访问API,以使用基本身份验证获取响应,但当我提交数据时,它会给我带来可怕的400错误,这显然表明某些标头设置不正确。 以下是API信息: 作为回应,我应该得到一个JSON形式的加密令牌,而不是得到这个错误。 以下是邮差截图: 我错过了什么吗?
我正试着在邮递员上打API。API正在服务器上工作,但我没有收到任何数据。以下是视觉图像: 它是回应我与“没有数据”和400错误的要求。