小编Hra*_*yan的帖子

如何将反射器传递给 Nest.js 全局守卫?

我是 Nest.js 的新手,我有一个问题。我有一个这样的角色守卫

import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';
import { Observable } from 'rxjs';
import { Reflector } from '@nestjs/core';

@Injectable()
export class RolesGuard implements CanActivate {
  constructor(private readonly reflector: Reflector) {
  }

  canActivate(context: ExecutionContext): boolean | Promise<boolean> | Observable<boolean> {
    const roles = this.reflector.get<string[]>('roles', context.getHandler());
    if (!roles) {
      return true;
    }
    const request = context.switchToHttp().getRequest();
    const user = request.user;
    return user.role.some(role => !!roles.find(item => item === role));
  }

}
Run Code Online (Sandbox Code Playgroud)

现在我想像这样使用这个守卫作为全局守卫

app.useGlobalGuards(new RolesGuard())
Run Code Online (Sandbox Code Playgroud)

但它说我需要将参数(反射器)传递给警卫,正如我在构造函数中提到的那样,现在可以像这样初始化反射器吗?

const reflector:Reflector = …
Run Code Online (Sandbox Code Playgroud)

dependency-injection guard nestjs

5
推荐指数
1
解决办法
7146
查看次数

如何同时更新结构的多个字段?

假设我有一个结构

struct Vector3 {
    float x;
    float y;
    float z;
};

Run Code Online (Sandbox Code Playgroud)

注意sizeof(Vector3)必须保持不变。

编辑:我对没有二传手的解决方案感兴趣。

不要让我们创建该 struct 的实例Vector3 pos。我如何能实现我的结构,所以我可以有这样的事情pos.xy = 10 // updates x and y还是pos.yz = 20 // updates y and zpos.xz = 30 // updates x and z

c++ struct field accessor

5
推荐指数
1
解决办法
239
查看次数

类型只能包含一个@Inject构造函数

资料模型

data class AuthDataModel @Inject constructor(
                   var username: String = "",
                   var password: String = "",
                   var mobileData: String = "
Run Code Online (Sandbox Code Playgroud)

说明

我正在尝试将身份验证数据模型注入kotlin中的身份验证视图模型,但无法与message一起编译(“类型只能包含一个@Inject构造函数)

android kotlin

4
推荐指数
1
解决办法
316
查看次数

类验证器不区分大小写的枚举验证?

我有这样的 anum:

export enum UserRole {
  USER,
  ADMIN,
  BLOGGER
}
Run Code Online (Sandbox Code Playgroud)

并像这样 create.user.dto

import { IsEmail, IsEnum, IsNotEmpty, IsOptional } from 'class-validator';
import { UserRole } from './user.entity';

export class CreateUserDto {
  @IsEmail()
  email: string;

  @IsNotEmpty()
  firstName: string;

  @IsNotEmpty()
  lastName: string;

  @IsOptional()
  username: string;

  @IsOptional()
  @IsEnum(UserRole)
  role: UserRole;

  @IsNotEmpty()
  password: string;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我只发布角色大写 ('ADMIN','USER') 或 'BLOGGER',角色验证不会失败。

如何使类验证器不区分大小写?我的意思是,也验证“admin”“aDmIn”为真。

enums case-sensitive node.js class-validator

4
推荐指数
2
解决办法
5392
查看次数

相同的模板结构,C++

考虑我有结构 RGB 和 ARGB。

template<typename T>
struct RGB {
    T r,g,b;
};

template<typename T>
struct ARGB {
    T a,r,g,b;
}
Run Code Online (Sandbox Code Playgroud)

现在我通过以下来定义它们。

using RGB_888 = RGB<unsigned char>;
using RGB_Float = RGB<float>;
using ARGB_8888 = ARGB<unsigned char>;
using ARGB_Float = ARGB<float>;
Run Code Online (Sandbox Code Playgroud)

在某些时候,我想从一个 rgb 转换为另一个,从 rgb 转换为 argb。所以我做以下事情。

template<typename Source, typename Dest>
void convert(const Source& source, Dest& dest)
{

}
Run Code Online (Sandbox Code Playgroud)

它会像这样工作。

RGB_888 rgb888{123,22,311};
RGB_Float rgbFloat;
convert<RGB_888,RGB_Float>(rgb888,rgbFloat);

RGB_888 rgb888(123,22,132};
ARGB_Float argbFloat;
convert<RGB_888,ARGB_Float>(rgb888,argbFloat);
Run Code Online (Sandbox Code Playgroud)

问题是我无法检测typename Sourcetypename Dest是否来自相同的颜色模型,我需要正确转换。换句话说,如果一些typename …

c++ templates std is-same

-2
推荐指数
1
解决办法
80
查看次数