Tartalomjegyzék
AdonisJS - Gyorskezdés
- Szerző: Sallai András
- Copyright © 2025, Sallai András
- Web: https://szit.hu
Webhelyek
Webhely:
Dokumentáció:
Projekt létrehozása
npm init adonisjs@latest hello -- --kit=api
A projekt létrehozása paraméterezhető a következő kapcsolókkal:
- --kit: A projekt típusát adhatjuk meg. Lehet web, api, slim vagy inertia.
- --db: Lehet sqlite, postgres, mysql, mssql.
- --git-init: Git tárolót is előkészít.
- --auth-guard: Azonosítás: session, access_tokens vagy basic_auth
Példák:
npm init adonisjs@latest hello -- --kit=api --db=mysql
npm init adonisjs@latest hello -- --kit=api --db=postgres
npm init adonisjs@latest hello -- --kit=api --auth-guard=access_tokens
Fejlesztői szerver
npm run dev
Ellenőrizzük egy HTTP klienssel, például a res paranccsal:
res localhost:3333
Adatbázis választás
SQLite választás esetén az adatbázisfájl a következő helyre kerül:
- tmp/db.sqlite3
A fájl nem kerül törlésre, de ha éles környezetben szeretnénk az alkalmazást használni érdemes áttenni például a database könyvtárba.
Az SQLite fájl útvonala a következő helyen van meghatározva.
- config/database.ts
Útválasztás
Az útvonalak a következő helyen taálhatók:
- start/routes.ts
Útvonalak listázása:
node ace list:routes
Kontroller
Kontroller létrehozása:
node ace make:controller valami
Kontroller létrehozása függvényekkel:
node ace make:controller employee --resource --singular --api
- A --singular hatására a kontroller állományneve egyesszámban szerepel.
- A --api hatására nem lesz edit() és create() függvény.
Modell
Az adatbázis táblák mezőit két helyen is le kell írni:
- modellfájl
- migrációs fájl
Modell létrehozása:
node ace make:model employee
- app/models/emploee.ts
import { DateTime } from 'luxon' import { BaseModel, column } from '@adonisjs/lucid/orm' export default class Employee extends BaseModel { @column({ isPrimary: true }) declare id: number @column() declare name: string @column() declare city: string @column() declare salary: number @column.dateTime({ autoCreate: true }) declare createdAt: DateTime @column.dateTime({ autoCreate: true, autoUpdate: true }) declare updatedAt: DateTime }
Migráció
Migrációs fájl létrehozása:
node ace make:migration valami
async up() { this.schema.createTable(this.tableName, (table) => { table.increments('id') table.string('name').notNullable() table.string('city') table.integer('salary') table.timestamp('created_at') table.timestamp('updated_at') }) }
Migráció futtatása:
node ace migration:run
Migráció frissítése:
node ace migration:refresh
Modell használata a kontrollerben
- app/controllers/employee_controller.ts
import Employee from '#models/employee' import type { HttpContext } from '@adonisjs/core/http' export default class EmployeeController { async index({}: HttpContext) { const employees = await Employee.all() return { data: employees } } async store({ request }: HttpContext) { const employee = await Employee.create(request.all()) return { data: employee } } async show({ params }: HttpContext) { const employee = await Employee.findOrFail(params.id) return { data: employee } } async update({ params, request }: HttpContext) { const employee = await Employee.findOrFail(params.id) employee.merge(request.all()) await employee.save() return { data: employee } } async destroy({ params }: HttpContext) { const employee = await Employee.findOrFail(params.id) await employee.delete() return { data: employee } } }
Nézzük meg kapunk-e egy üres tömböt:
res localhost:3333/employees
Vegyünk fel dolgozót:
res post localhost:3333/employees name="Erős István city=Szeged salary=395.8