LLaraNode
Router Package

Route Model Binding

Route model binding automatically resolves route parameters to model instances.

Route Model Binding

Route model binding automatically resolves route parameters to model instances.

Binding Models

Use the @Bind() decorator on a model:

import { Model, Bind } from "@lara-node/db";

@Bind("user")
class User extends Model {
  static table = "users";
}

Now routes with :user parameter automatically resolve:

Route.get("/users/:user", (req) => {
  // req.user is already the User model instance
  return req.user;
});

Controller Usage

@Route("/api/users")
class UserController {
  @Route.get("/:user")
  async show(req: Request) {
    // req.user is the resolved User model
    return req.user;
  }

  @Route.put("/:user")
  async update(req: Request) {
    const user = req.user;
    return user.update(req.body);
  }
}

Custom Resolution

You can customize how models are resolved:

Route.model("user", async (value) => {
  return User.where("slug", value).firstOrFail();
});

Enable Auto Model Binding

Route.enableAutoModelBinding();

Next Steps