【发布时间】:2021-04-30 00:53:49
【问题描述】:
输入.toObject()return 的正确方法是什么?
const userDoc = await UsersModel.findOne({email})
const user:IUserObject = userDoc.toObject()
user 不是 IUserObject。它的输入没有意义:Pick<Pick<_LeanDocument<IUserModel>, "_id"...。
这是我的模型输入:
import {Schema, model, Document} from 'mongoose'
export interface IUser {
email: string
password: string
}
export interface IUserObject extends IUser {
_id: string
}
export interface IUserModel extends Document, IUser {}
const schema = new Schema({
email: { type: String, required: true },
password: { type: String, required: true }
})
export const UsersModel = model<IUserModel>('Users', schema)
【问题讨论】:
-
我认为这里没有一个好的答案。 mongoose 的类型声明不清楚且笨拙。您可以将类型强制转换为您的接口,也可以使用 mongoose 计算类型。我想说,我认为验证从数据库中检索到的数据有很多好处,它邀请人们编写一个函数 validateRetrieved(data: unknown): IUser 恰好可以解决您的初始问题
标签: typescript mongoose