所以我正在使用 NestJs 和 Typegoose 构建一个后端,具有以下模型:
部门
@modelOptions({ schemaOptions: { collection: 'user_department', toJSON: { virtuals: true }, toObject: { virtuals: true }, id: false } })
export class Department {
@prop({ required: true })
_id: mongoose.Types.ObjectId;
@prop({ required: true })
name: string;
@prop({ ref: () => User, type: String })
public supervisors: Ref<User>[];
members: User[];
static paginate: PaginateMethod<Department>;
}
Run Code Online (Sandbox Code Playgroud)
用户
@modelOptions({ schemaOptions: { collection: 'user' } })
export class User {
@prop({ required: true, type: String })
_id: string;
@prop({ required: …Run Code Online (Sandbox Code Playgroud) 我试图通过使用 TypeORM 和 crud 库创建一个简单的 REST Api 来进入 Nestjs。到目前为止,我已经创建了一个基于工作角色的身份验证,但我遇到了一个奇怪的问题。我使用 crud 库为 User 实体创建一个简单的控制器。GET 请求运行正常,没有任何问题。但我无法 POST 来创建新用户,也无法使用 PATCH 来更新用户。我认为这可能只是我的一个非常愚蠢的错误,但由于我没有编写太多代码,所以我找不到与文档中的示例有任何差异。
当我尝试修补属性时,它只是用原始用户对象响应我,没有进行任何更改(就像我发送了一个空请求)。当我尝试发布新用户时,响应是以下错误消息:
{
"statusCode": 400,
"error": "Bad Request",
"message": "Empty data. Nothing to save."
}
Run Code Online (Sandbox Code Playgroud)
这可能与验证有关..
这是我的用户控制器:
import { Controller, UseGuards } from '@nestjs/common';
import { UserService } from './user.service';
import { User } from './user.entity';
import { AuthGuard } from '@nestjs/passport';
import { ApiTags, ApiSecurity } from '@nestjs/swagger';
import { RolesGuard } from 'src/auth/role.guard';
import { Roles } from './roles.decorator';
import { …Run Code Online (Sandbox Code Playgroud)