Comments (4)
Hi @Mark-McCracken,
Thanks for the report.
Issue is fixed in 1.0.2 version. Please, update your package :)
from nest.
I think this is due to the following file
src/common/utils/decorators/route-params.decorator.ts
import 'reflect-metadata';
import { ROUTE_ARGS_METADATA } from '../../constants';
import { RouteParamtypes } from '../../enums/route-paramtypes.enum';
export type ParamData = object | string | number;
export interface RouteParamsMetadata {
[prop: number]: {
index: number;
data?: ParamData;
};
}
const assignMetadata = (
args: RouteParamsMetadata,
paramtype: RouteParamtypes,
index: number,
data?: ParamData) => ({
...args,
[paramtype]: { index, data },
});
const createRouteParamDecorator = (paramtype: RouteParamtypes) => {
return (data?: ParamData): ParameterDecorator => (target, key, index) => {
const args = Reflect.getMetadata(ROUTE_ARGS_METADATA, target, key) || {};
Reflect.defineMetadata(
ROUTE_ARGS_METADATA,
assignMetadata(args, paramtype, index, data),
target,
key,
);
};
};
export const Request: () => ParameterDecorator = createRouteParamDecorator(RouteParamtypes.REQUEST);
export const Response: () => ParameterDecorator = createRouteParamDecorator(RouteParamtypes.RESPONSE);
export const Next: () => ParameterDecorator = createRouteParamDecorator(RouteParamtypes.NEXT);
export const Query: (property?: string) => ParameterDecorator = createRouteParamDecorator(RouteParamtypes.QUERY);
export const Body: (property?: string) => ParameterDecorator = createRouteParamDecorator(RouteParamtypes.BODY);
export const Param: (property?: string) => ParameterDecorator = createRouteParamDecorator(RouteParamtypes.PARAM);
export const Session: () => ParameterDecorator = createRouteParamDecorator(RouteParamtypes.SESSION);
export const Headers: (property?: string) => ParameterDecorator = createRouteParamDecorator(RouteParamtypes.HEADERS);
the createRouteParamDecorator function I think will be called multiple times when using the decorator twice.
The assignMetadata function is using [paramtype] as the key, however this key will not be unique when using enums.
This needs to be combined with the index, perhaps as a Map value I think, so that when then next decorator comes along with the same enum (Param or body), it doesn't cause a conflict with the existing key.
from nest.
perhaps this could solve it?
export interface RouteParamsMetadata {
[prop: string]: {
index: number;
data?: ParamData;
};
}
const assignMetadata = (
args: RouteParamsMetadata,
paramtype: RouteParamtypes,
index: number,
data?: ParamData) => ({
...args,
[paramtype:${paramtype}, index:${index}
]: { index, data },
});
from nest.
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
from nest.
Related Issues (20)
- cannot run debugger with custom webpack config HOT 1
- Extended ConsoleLogger prints undefined on every log message HOT 2
- Argument of type 'FastifyCookie' is not assignable to parameter of type 'FastifyPluginCallback<FastifyCookieOptions> | FastifyPluginAsync<FastifyCookieOptions> | Promise<...> | Promise<...>'. HOT 2
- Kafka microservice throw Error when first connect to server HOT 1
- Decouple Nest's DI container from Node API HOT 5
- KafkaJs seems not maintained anymore HOT 2
- Add `@RawBody()` decorator to avoid having to always resort to `@Req()` with specific types and parameters HOT 1
- Nest can't resolve dependencies of the custom Validator with Repository HOT 2
- issue opened on wrong repo HOT 1
- Bad typings for Fastify server `enableCors` method, `delegator` property is missing HOT 3
- When I use Nestjs in my own build monorepo project, there seems to be some bugs with "@nestjs/core postinstall". HOT 1
- Improve experience when initialisation error occurs HOT 1
- When I introduce a configuration file from outside the project, an error occurs: Cannot find module HOT 3
- circular dependecy error due to reflect-metadata dependency HOT 1
- Validation Pipe is not executed HOT 2
- Error cause is not logged in dev:watch mode
- Use multiple env files HOT 1
- Calling grpcClient.start in server-grpc is no longer necessary since version 1.10.x HOT 2
- Error: Unknown authentication strategy "jwt" for Project with multi apps projects HOT 11
- broken path in build output HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nest.