使用 Typescript 从 Mongoose 模型访问文档属性
Posted
技术标签:
【中文标题】使用 Typescript 从 Mongoose 模型访问文档属性【英文标题】:Access document properties from a Mongoose Model using Typescript 【发布时间】:2020-01-18 11:46:56 【问题描述】:我将 Mongoose 与 Typescript 一起使用,并希望从模型中访问属性。鉴于此示例 UserModel
import mongoose, Schema from 'mongoose';
const userSchema: Schema = new mongoose.Schema(
_id: mongoose.Schema.Types.ObjectId,
username:
type: String,
required: true,
unique: true,
,
);
export const UserModel = mongoose.model('User', userSchema);
我想在获取用户后访问用户名
const user: Document | null = await UserModel.findById(id);
const username: string = (user as Document).username;
但由于Document
是一个接口,我无法从UserModel 访问该属性。如何访问它?
【问题讨论】:
【参考方案1】:我建议您为您的User
创建一个界面,如下所示:
export interface IUserDocument extends mongoose.Document
username: string;
之后,您可以使用以下内容定义您的模型:
export const UserModel = mongoose.model<IUserDocument>('User', userSchema);
如果您随后获得IUserDocument
,您可以轻松访问找到的文档上的用户名属性,如下所示:
const user: IUserDocument | null = await UserModel.findById(id);
const username: string = user.username;
【讨论】:
以上是关于使用 Typescript 从 Mongoose 模型访问文档属性的主要内容,如果未能解决你的问题,请参考以下文章
使用 Typescript 在 Mongoose 中缺少子文档方法
Typescript & Mongoose - "this" 在实例方法中不可用
使用`let cached = global.mongoose`时出现Next.js + Typescript + mongoose错误
typescript 使用TypeScript和MongoDb的Mongoose示例