Quickstarters
CRUD Samples
How to Create a CRUD Application with Koa.js?
35 分
はじめに このガイドでは、koa jsを使用してcrud(作成、読み取り、更新、削除)アプリケーションを開発する方法を学びます。 このチュートリアルでは、koa jsバックエンドをback4appと統合することで、データを管理し、機能的なapiを構築するための基本的なステップを説明します。まず、 basic crud app koajs というback4appプロジェクトを設定します。これは、アプリケーションの強力なバックエンドとして機能します。 その後、コレクションを確立し、フィールドを定義することで柔軟なデータベーススキーマを設計します。これは手動で行うことも、back4app aiエージェントの助けを借りることもできます。この設定により、データが整理され、スムーズなcrud操作が可能になります。 次に、データ管理タスクを簡素化するノーコードのドラッグアンドドロップツールであるback4app admin appを利用します。これにより、レコードの作成、読み取り、更新、削除が簡単に行えます。 最後に、koa jsサーバーを設定してback4appとrest apiを介して対話させ、バックエンドを保護するための堅牢なアクセス制御を実装します。 このチュートリアルの終わりまでに、基本的なcrud操作をサポートするだけでなく、ユーザー認証と安全なデータ処理を含む、商用利用可能なサーバーサイドアプリケーションを構築することができます。 重要なポイント 信頼できるクラウドバックエンドを活用しながら、koa jsでcrudアプリケーションを構築する方法を発見します。 スケーラブルなバックエンドの設計とrestful apiとの統合についての洞察を得ます。 直感的なback4app管理アプリを使用してcrud操作を簡素化する方法を学びます。 dockerを使用したコンテナ化を含むデプロイメント戦略を探求し、koa jsアプリケーションを迅速に立ち上げます。 前提条件 始める前に、以下のものを用意してください アクティブなプロジェクトを持つback4appアカウント。 ガイダンスについては、 back4appの始め方 https //www back4app com/docs/get started/new parse app をチェックしてください。 動作するnode js開発環境。 node js(v14以降)をインストールし、koa jsプロジェクトを設定してください。 javascript、koa js、およびrest apiの基本的な知識。 必要に応じて、 koa jsのドキュメント https //koajs com/ を確認してください。 ステップ 1 – back4app プロジェクトの設定 新しい back4app プロジェクトの作成 back4app アカウントにログインします。 ダッシュボードから「新しいアプリ」ボタンをクリックします。 プロジェクトに名前を付けます basic crud app koajs と指示に従って設定を完了します。 新しいプロジェクトを作成 プロジェクトが確立されると、ダッシュボードに表示され、アプリケーションに必要なバックエンドフレームワークが提供されます。 ステップ 2 – データベーススキーマの作成 データモデルの設計 このcrudアプリケーションでは、いくつかのコレクションを設定する必要があります。以下は、データベーススキーマを効果的に構成するための推奨フィールドとタイプを含むサンプルコレクションです。 1\ アイテムコレクション このコレクションは各アイテムの詳細を保持しています。 フィールド タイプ 説明 id オブジェクトid 自動生成された一意の識別子。 タイトル 文字列 アイテムのタイトル。 説明 文字列 アイテムの簡単な説明。 作成日時 日付 アイテムが作成されたタイムスタンプ。 更新日時 日付 最新の更新のタイムスタンプ。 2\ ユーザーコレクション このコレクションはユーザーデータと認証情報を管理します。 フィールド タイプ 説明 id オブジェクトid 自動生成された主キー。 ユーザー名 文字列 ユーザーのためのユニークなユーザー名。 メール 文字列 ユーザーのユニークなメールアドレス。 パスワードハッシュ 文字列 安全にハッシュ化されたパスワード。 作成日時 日付 アカウント作成のタイムスタンプ。 更新日時 日付 最後のアカウント更新のタイムスタンプ。 これらのコレクションは、back4appダッシュボードを介して、新しいクラスを追加し、それぞれの対応する列を定義することで作成できます。 新しいクラスを作成 適切なタイプを選択し、デフォルト値を設定し、フィールドが必須かどうかを指定することで、フィールドを定義できます。 カラムを作成 back4app aiエージェントを活用したスキーマ設定 ダッシュボード内で利用可能なback4app aiエージェントは、コレクションとフィールドを説明する詳細なプロンプトからデータベーススキーマを自動的に生成できます。この機能はプロジェクトの設定を迅速化し、crud操作のための一貫したスキーマを保証します。 aiエージェントの使用方法 back4appダッシュボードまたはプロジェクト設定内からaiエージェントを開きます。 必要なコレクションとフィールドを概説する説明的なプロンプトを提供します。 生成されたスキーマを確認し、プロジェクトに設定を適用します。 例のプロンプト create these collections in my back4app project 1\) collection items \ fields \ id objectid (auto generated) \ title string \ description string \ created at date (auto generated) \ updated at date (auto updated) 2\) collection users \ fields \ id objectid (auto generated) \ username string (unique) \ email string (unique) \ password hash string \ created at date (auto generated) \ updated at date (auto updated) このアプローチは時間を節約し、スキーマが一貫して最適化されていることを保証するのに役立ちます。 ステップ 3 – 管理アプリと crud 機能の有効化 管理アプリの概要 back4app 管理アプリは、ドラッグアンドドロップコントロールを通じてバックエンドデータを簡単に管理できるユーザーフレンドリーなインターフェースです。このノーコードツールは、レコードの作成、読み取り、更新、削除などの操作を簡素化します。 管理アプリの有効化 back4app ダッシュボードの「その他」メニューに移動します。 「管理アプリ」を選択し、 「管理アプリを有効にする。」 初期管理アカウントを設定します。このプロセスでは、 b4aadminuser のようなシステムロールが確立され、システムコレクションが準備されます。 管理アプリを有効にする 有効化されたら、管理アプリにログインしてコレクションとレコードを管理します。 管理アプリダッシュボード 管理アプリ内で、次のことができます。 新しいレコードを追加 任意のコレクション(例 アイテム)で「レコードを追加」ボタンを使用して新しいエントリを作成します。 レコードを表示および編集 レコードを選択してその詳細を確認したり、フィールドを変更します。 レコードを削除 もはや必要のないエントリを削除します。 ステップ 4 – koa js バックエンドを back4app に接続する バックエンドが設定され、管理されているので、koa js サーバーを設定して back4app と対話する時が来ました。 koa js で rest api を使用する このチュートリアルでは、koa js サーバーから rest api コールを使用して、back4app コレクションで crud 操作を実行する方法を示します。 基本的な koa js サーバーの設定 koa js と必要なミドルウェアをインストールします: npm install koa koa router koa bodyparser node fetch サーバーファイルを作成します(例: server js ) // server js const koa = require('koa'); const router = require('koa router'); const bodyparser = require('koa bodyparser'); const fetch = require('node fetch'); const app = new koa(); const router = new router(); const application id = 'your application id'; const rest api key = 'your rest api key'; const base url = 'https //parseapi back4app com'; // fetch all items router get('/items', async (ctx) => { try { const response = await fetch(`${base url}/classes/items`, { headers { 'x parse application id' application id, 'x parse rest api key' rest api key } }); const data = await response json(); ctx body = data results; } catch (error) { ctx status = 500; ctx body = { error 'failed to fetch items' }; } }); // create a new item router post('/items', async (ctx) => { const { title, description } = ctx request body; try { const response = await fetch(`${base url}/classes/items`, { method 'post', headers { 'x parse application id' application id, 'x parse rest api key' rest api key, 'content type' 'application/json' }, body json stringify({ title, description }) }); const newitem = await response json(); ctx body = newitem; } catch (error) { ctx status = 500; ctx body = { error 'error creating item' }; } }); // update an item router put('/items/\ id', async (ctx) => { const { id } = ctx params; const { title, description } = ctx request body; try { const response = await fetch(`${base url}/classes/items/${id}`, { method 'put', headers { 'x parse application id' application id, 'x parse rest api key' rest api key, 'content type' 'application/json' }, body json stringify({ title, description }) }); const updateditem = await response json(); ctx body = updateditem; } catch (error) { ctx status = 500; ctx body = { error 'error updating item' }; } }); // delete an item router delete('/items/\ id', async (ctx) => { const { id } = ctx params; try { await fetch(`${base url}/classes/items/${id}`, { method 'delete', headers { 'x parse application id' application id, 'x parse rest api key' rest api key } }); ctx body = { message 'item deleted successfully' }; } catch (error) { ctx status = 500; ctx body = { error 'error deleting item' }; } }); app use(bodyparser()); app use(router routes()) use(router allowedmethods()); const port = process env port || 3000; app listen(port, () => { console log(`server is running on port ${port}`); }); このセットアップにより、koa jsサーバーがrest呼び出しを介してback4appと通信し、すべてのcrud操作を処理します。 ステップ5 – バックエンドのセキュリティ アクセス制御の実装 オブジェクトレベルでアクセス制御リスト(acl)を適用することでデータを保護します。たとえば、プライベートアイテムを作成する際には、aclを設定してアクセスを制限します async function createsecureitem(itemdata, ownersessiontoken) { try { const response = await fetch(`${base url}/classes/items`, { method 'post', headers { 'x parse application id' application id, 'x parse rest api key' rest api key, 'content type' 'application/json', 'x parse session token' ownersessiontoken }, body json stringify({ title itemdata title, description itemdata description, acl { " " { "read" false, "write" false }, "owner" { "read" true, "write" true } } }) }); const result = await response json(); console log('secure item created ', result); } catch (error) { console error('error creating secure item ', error); } } クラスレベルの権限設定 (clps) back4app ダッシュボード内で、各コレクションの clp を設定してデフォルトルールを確立し、認可されたユーザーのみが機密データにアクセスできるようにします。 ステップ 6 – ユーザー認証 ユーザーアカウントの設定 back4app は認証を処理するためにユーザークラスを利用します。koa js サーバー内で、back4app rest api とインターフェースを介してユーザー登録とログインを管理します。 例 ユーザー登録エンドポイント router post('/signup', async (ctx) => { const { username, password, email } = ctx request body; try { const response = await fetch(`${base url}/users`, { method 'post', headers { 'x parse application id' application id, 'x parse rest api key' rest api key, 'content type' 'application/json' }, body json stringify({ username, password, email }) }); const userdata = await response json(); ctx body = userdata; } catch (error) { ctx status = 500; ctx body = { error 'error signing up' }; } }); 必要に応じて、ログインやセッション管理のための同様のエンドポイントを構築できます。 ステップ 7 – koa js アプリケーションのデプロイ back4appのwebデプロイメント機能を使用すると、koa jsサーバーをgithubリポジトリにリンクしてホストできます。 7 1 – プロジェクトを構築し整理する プロジェクトが適切に構造化されていることを確認してください。サンプルレイアウトは次のようになります basic crud app koajs/ ├── node modules/ ├── server js ├── package json └── readme md すべてのソースファイルをgitリポジトリにコミットします。 サンプルgitコマンド git init git add git commit m "initial commit of koa js backend" git remote add origin https //github com/your username/basic crud app koajs git git push u origin main 7 2 – back4app webデプロイメントと統合する back4appダッシュボードにログインし、プロジェクト basic crud app koajs , に移動し、 web deployment セクションに移動します。 まだ行っていない場合は、githubアカウントを接続します。 リポジトリと関連するブランチ(例 main ) を選択します。 7 3 – デプロイメント設定を構成する ビルドコマンド プロジェクトをビルドする必要がある場合(たとえば、最新のjavascriptをトランスパイルする場合)、次のようなビルドコマンドを指定します npm run build 出力ディレクトリ 適用可能な場合、プロダクション用のファイルを含むフォルダを指定します。 環境変数 デプロイメント設定に必要な環境変数(apiキーなど)を追加します。 7 4 – オプション koa jsサーバーをdocker化する アプリケーションをコンテナとしてデプロイしたい場合は、リポジトリに dockerfile を含めてください \# use the official node js image as a base from node 16 alpine \# set the working directory workdir /app \# copy package files and install dependencies copy package json / run npm install \# copy the rest of the application code copy \# expose the desired port expose 3000 \# run the application cmd \["node", "server js"] 7 5 – アプリケーションを起動する back4app の deploy ボタンをクリックします。 デプロイメントログを監視して、アプリが正常にビルドされ、デプロイされていることを確認します。 完了すると、back4app は koa js サーバーにアクセスできる url を提供します。 7 6 – デプロイメントを検証する 提供された url にアクセスして、アプリケーションが実行されていることを確認します。 各エンドポイント(crud 操作、ユーザー認証)をテストして、正しい機能を確認します。 問題が発生した場合は、トラブルシューティングのためにログとデプロイ設定を確認します。 ステップ8 – 結論と今後の改善 素晴らしい仕事です!あなたは今、koa jsとback4appを統合した完全に機能するcrudアプリケーションを構築しました。 あなたのプロジェクト basic crud app koajs は、アイテムとユーザーのために慎重に設計されたコレクション、データ管理のための使いやすい管理アプリ、および安全なバックエンドを特徴としています。 次のステップ: apiを拡張する: 追加のルート、ミドルウェア、またはリアルタイム機能でkoa jsサーバーを強化しましょう。 認証を改善する: トークンベースの認証、ソーシャルログイン、または多要素認証の実装を検討してください。 さらなるドキュメントを探る: より高度なトピックや最適化については、 back4appのドキュメント https //www back4app com/docs と koa jsのガイド https //koajs com/ をチェックしてください。 このチュートリアルに従うことで、あなたはkoa jsとback4appを使用してスケーラブルで安全かつ効率的なcrudバックエンドを構築するスキルを持っています。楽しんでください。