我有一个关于NestJS与Mongoose组合的问题
服务函数上的错误为
TS2740: Type '(Users & Document<any, any, any> & { _id: ObjectId; })[]' is missing the following properties
from type 'Users': email, password, name, role, and 2 more.
方案
创建以下模式(几乎直接从文档创建):
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
export type UsersDocument = Users & Document;
@Schema({ collection: 'users' })
export class Users {
@Prop({ required: true })
email: string;
@Prop({ required: true })
password: string;
@Prop({ required: true })
name: string;
@Prop({ required: true })
role: string[];
@Prop({ required: false })
passwordforgottentoken: string;
@Prop({ required: false })
passwordforgottenexpired: number;
}
export const UsersSchema = SchemaFactory.createForClass(Users);
控制器(仅限“findOne”路由)
@Get('/:email')
findOne(@Param('email') email) {
return this.usersService.findOne(email);
}
服务(仅限“findOne”函数)
async findOne(email: string): Promise<Users> {
return this.usersModel.find(
{ email: email },
{ _id: 0, __v: 0, password: 0 },
);
}
当我将Promise<Users>
更改为Promise<any>
时,它工作正常。
但是为什么打字稿抱怨缺少道具呢?
1条答案
按热度按时间aor9mmx11#
mongoose的
.find()
方法返回一个Users
数组。您可能想要使用.findOne()
方法。