【发布时间】:2021-09-26 22:35:55
【问题描述】:
我有两条路由对令牌执行相同的操作以从数据库中提取用户文档。之后,两者都对该文档执行不同的操作。为了改进代码,我试图将相同的操作部分放在一个函数中并在两个路由中调用它。有点像 -
let user = await returnUser(req, res, token)
user.verified = true;
await user.save();
但问题是我正在使用 Typescript,并且在执行 user.save() 之类的操作或访问文档中的项目时遇到类型错误。谁能告诉我如何设置类型,以便我可以访问从函数返回的文档而不会出现类型错误。
编辑:我正在添加代码。 将返回文档的函数 -
import { Request, Response } from "express";
import { Token } from "../util/token";
import { User } from "../models/user";
export const returnUser = async (
req: Request,
res: Response,
token: string
) => {
if (!token) return res.status(400).send({ error: "Token is not present" });
let decoded = await Token.decode(token);
if (decoded === false) {
return res.status(400).send({ error: "Invalid Token" });
}
let email = decoded.email;
let user = await User.findOne({ email });
if (!user) return res.status(400).send({ error: "User not found" });
if (user.createdAt.getTime() !== decoded.epoch)
return res.status(400).send({ error: "Invalid timestamp" });
return user;
};
还有错误-
Message when hovering over the error
我的用户文档 -
interface UserDoc extends mongoose.Document {
email: string;
username: string | null;
verified: boolean;
createdAt: Date;
}
【问题讨论】:
-
请添加更多你的实现,以便我们看到你想要改进的地方
-
确切的错误会很好
-
@AshwynHorton 添加了代码。
-
@AutMai 也添加了错误。
-
太棒了,谢谢
标签: typescript express mongoose