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
- Controllers -- Controller decorators
- Resource Routes -- RESTful routing
- Models -- Working with models