首页 > 解决方案 > 猫鼬模式的函数参数类型,在 Typescript 中?

问题描述

对于作为参数传递给函数的猫鼬文档,我正在尝试找出正确的参数类型。

从定义开始:

import mongoose, { Schema, Document } from 'mongoose';

export interface IUser extends Document {
  email: string;
  firstName: string;
  lastName: string;
}

const UserSchema: Schema = new Schema({
  email: { type: String, required: true, unique: true },
  firstName: { type: String, required: true },
  lastName: { type: String, required: true }
});

export default mongoose.model<IUser>('User', UserSchema);

然后我们有一个看起来像这样的函数:

function updateUser(user: IUser) { 
  user.firstName = 'something';
  user.lastName = 'somethingElse';
  user.save();
}

这里的问题是 Document 类型没有save()函数,所以它失败了。同时我不能指定User,因为它会抛出错误“'用户'是指一个值,但在这里被用作类型。ts(2749)”。

用户参数是findOne()操作的对象。

标签: typescriptmongoose

解决方案


我们最终通过添加@types/mongoose模块解决了这个问题,然后问题中提出的功能起作用了。


推荐阅读