typescript - 猫鼬模式的函数参数类型,在 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()
操作的对象。
解决方案
我们最终通过添加@types/mongoose
模块解决了这个问题,然后问题中提出的功能起作用了。
推荐阅读
- laravel-5 - Laravel 5.8 make:具有自定义路径的模型
- css - 无法将焦点样式应用于样式化组件
- perforce - 我如何将整个项目从 perforce 下载到设备上?
- laravel - 带有验证电子邮件问题的多重身份验证
- java - 在 Java 中将字符串转换为 ByteBuffer
- c# - 创建用另一个对象初始化的 C# 全局对象
- c# - 动态创建资源文件
- javascript - 在删除 Django 对象时创建一个香草 JavaScript 确认删除模式
- nginx - NGINX 代理资源加载问题
- batch-file - 如何从另一个批处理文件在批处理文件中写入管道(|)?