Code Monkey home page Code Monkey logo

Comments (3)

shekohex avatar shekohex commented on May 14, 2024 1

The RouterModule is just adding a prefixes to the all Controllers registered at that Module, so for Example
if we have that route:

{
    path: 'ninja', // the prefix slash is optional
    module: NinjaModule
}

and we registered NinjaController at NinjaModule

...
@Controller(':ninjaId')
export class NinjaController {
    @Get()
    findNinja(@Param('ninjaId') ninjaId) {
        return { ninjaId };
    }
}

so if we hit /ninja/10 it will get { ninjaId: 10 }.
that's have been said.

back to your question, we need to achieve this /ninja/10/cats right ?

in my opinion, each controller - NinjaController & CatsController - thay don't know each others, so instead of defining the param route in the controller scope, you need to define it on the RouterModule schema.
so instead of

{
    path: 'ninja`
    module: NinjaModule,
    children: [{ path: 'cats', module: CatsModule }, ...]
}

you will need to make it like this

{
    path: 'ninja/:ninjaId`
    module: NinjaModule,
    children: [{ path: 'cats', module: CatsModule }, ...]
}

that way, the Controllers registered at CatsModule in our case it is CatsController will be /ninja/:ninjaId/cats, instead of /ninja/cats which was on the first case, also you will need to remove :ninjaId from @Controller(':ninjaId') at NinjaController we don't need it anymore.

and now both NinjaController and CatsController will have access to ninjaId parameter.

give it a shot and let me know if there is any problem 😀

from nest-router.

jrista avatar jrista commented on May 14, 2024 1

So, in the previous example, you moved :ninjaId from the controller to the route. What if you need to be able to access ninjas both individually, by id, as well as the whole list of ninjas? Such as:

GET /ninjas -> [{ninjaId: ...}, {ninjaId: ...}]
GET /ninjas/1 -> {ninjaId: 1}

Can this be achieved with this router module, without having to hack the route for /ninjas/:ninjaId to return a list only if ninjaId is falsy?

from nest-router.

 avatar commented on May 14, 2024

Great!
Thank you very much! :)

from nest-router.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.