Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:adonisjs:gyorskezdes

< AdonisJS

AdonisJS - Gyorskezdés

Webhelyek

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
oktatas/web/adonisjs/gyorskezdes.txt · Utolsó módosítás: 2025/10/05 20:44 szerkesztette: admin