【发布时间】:2021-05-01 07:52:46
【问题描述】:
注意:请在回答前通读。这看起来像一个简单的问题,但我不确定它是否那么简单。另外,我是打字稿的新手,所以请放轻松:p
所以这是用例。我有一个模型用户,我编写了一个通用函数来根据数据库中的电子邮件检查用户是否存在。如果存在,则返回用户对象。
现在,如果它是任何其他对象,那么我可以定义类型并继续执行我的代码,但它是我从 DB 获取的用户对象,不知道如何解决这个问题。
我通过提到返回类型“any”找到了解决它的方法,但我的灵魂对此并不平静。这感觉更像是一种 hack,而不是一种解决方案。
废话不多说,代码如下:
export const existingUser = async (email: string): Promise<any> => {
const foundUser = await User.findOne({ email: email });
return foundUser;
};
现在,正如我上面提到的,这可行,但我尝试了一种不同的方法,即抛出错误。我已经定义了如下所示的用户模型类型:
export interface Iuser extends Document {
profile_picture_url?: string;
first_name: string;
last_name: string;
email: string;
password: string;
phone_number?: string;
is_agree_terms_at: string;
gender?: Gender;
role: UserRole;
isValid: boolean;
}
然后提到 Iuser 作为我的返回类型,因为这是我期望从数据库中获得的对象类型。我知道一旦添加到数据库中它会有其他字段,但我不知道更好-_-
export const existingUser = async (email: string): Promise<Iuser> => {
const foundUser = await User.findOne({ email: email });
return foundUser;
};
请帮帮我。我睡不着。
【问题讨论】:
-
你能更新错误吗?另外,请在扩展文档界面时更新文档界面以及您的架构如何查找用户?
标签: node.js typescript