はじめに
こんばんは。
今日もAdonisJS試していきます。
今日はDBのマイグレーションやってみます。
前回はこちら
本題
インストール
$ npm init adonisjs@latest migration_example > npx > create-adonisjs migration_example _ _ _ _ ____ / \ __| | ___ _ __ (_)___ | / ___| / _ \ / _` |/ _ \| '_ \| / __|_ | \___ \ / ___ \ (_| | (_) | | | | \__ \ |_| |___) | /_/ \_\__,_|\___/|_| |_|_|___/\___/|____/
設定は以下にしました。
❯ Which starter kit would you like to use · Inertia Starter Kit ❯ Which authentication guard you want to use · session ❯ Which database driver you want to use · mysql ❯ Which frontend adapter you want to use with Inertia · vue ❯ Do you want to setup server-side rendering with Inertia (y/N) · false
実行
$ cd migration_example $ npm run dev [ info ] starting HTTP server... EnvValidationException: Validation failed for one or more environment variables - Missing environment variable "DB_DATABASE" at <anonymous> start/env.ts:14 9| | 10| */ 11| 12| import { Env } from '@adonisjs/core/env' 13| ❯ 14| export default await Env.create(new URL('../', import.meta.url), { 15| NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const), 16| PORT: Env.schema.number(), 17| APP_KEY: Env.schema.string(), 18| HOST: Env.schema.string({ format: 'host' }), 19| LOG_LEVEL: Env.schema.string(), ⁃ EnvValidator node_modules/@adonisjs/env/src/validator.ts:27 ⁃ Function.rules node_modules/@adonisjs/env/src/env.ts:83 ⁃ Function.create node_modules/@adonisjs/env/src/env.ts:53
前回とは違いエラーが出ました。 SessionでDBを使用するようになったので、接続情報がないからエラーになってるみたいです。
.env
をつながるように修正します。
.env
DB_HOST=127.0.0.1 DB_PORT=3306 DB_USER=kojirock DB_PASSWORD=kojikoji-5260 DB_DATABASE=adonisjs_example
これで表示するといい感じに表示できます。
設定
node ace add @adonisjs/auth --guard=session
を実行して kernelの修正とかマイグレーションファイルを作ります。
(マイグレーションファイルはプロジェクトを作成したときに同じ内容のものがあるので削除しちゃっていいみたいです)
$ node ace add @adonisjs/auth --guard=session [ info ] Installing the package using the following command : npm add @adonisjs/auth ❯ Continue ? (Y/n) · true [ wait ] package installed successfully ... SKIPPED: create config/auth.ts (File already exists) DONE: update adonisrc.ts file DONE: create database/migrations/1722136317730_create_users_table.ts SKIPPED: create app/models/user.ts (File already exists) SKIPPED: create app/middleware/auth_middleware.ts (File already exists) SKIPPED: create app/middleware/guest_middleware.ts (File already exists) DONE: update start/kernel.ts file DONE: update start/kernel.ts file [ success ] Installed and configured @adonisjs/auth
マイグレーション実行
すでに存在しているマイグレーションファイルを実行します。
$ node ace migration:run ❯ migrated database/migrations/1722134672399_create_users_table Migrated in 61 ms $ node ace migration:status ┌────────────────────────────────────────────────────────┬─────────────┬─────────┬───────────┐ │ Name │ Status │ Batch │ Message │ ├────────────────────────────────────────────────────────┼─────────────┼─────────┼───────────┤ │ database/migrations/1722134672399_create_users_table │ completed │ 1 │ │ └────────────────────────────────────────────────────────┴─────────────┴─────────┴───────────┘
作られました。 adonis_schema
が laravelでいう migrations
みたいです。
終わりに
とりあえずマイグレーション実行してテーブル作るところまで行けました。
次はSeederとか実行したり、実際にデータ取ってきたり、なんだかんだやってみます。