Koajs-database
Koa.js-データベース
リクエストを受信していますが、どこにも保存していません。 データを保存するデータベースが必要です。 MongoDB と呼ばれる有名なNoSQLデータベースを使用します。 Mongoをインストールして読むには、link:/mongodb/mongodb_environment [this link。]にアクセスしてください。
KoaでMongoを使用するには、ノードのクライアントAPIが必要です。 複数のオプションがありますが、このチュートリアルではhttp://mongoosejs.com/[mongoose]に固執します。 Mongooseは、Node for MongoDBの*ドキュメントモデリング*に使用されます。 ドキュメントモデリングとは、 Model (ドキュメント指向プログラミングの class とほぼ同じ)を作成し、このモデルを使用して documents を生成することです(OOPで classs of document を作成するように) 。 すべての処理はこれらの「ドキュメント」で行われ、最後にこれらのドキュメントをデータベースに書き込みます。
Mongooseのセットアップ
Mongoをインストールしたので、他のノードパッケージをインストールしたのと同じ方法でmongooseをインストールします。
mongooseの使用を開始する前に、Mongoシェルを使用してデータベースを作成する必要があります。 新しいデータベースを作成するには、ターミナルを開いて「mongo」と入力します。 Mongoシェルが起動します。次を入力します。
新しいデータベースが作成されます。 Mongoシェルを開くたびに、デフォルトで「test」dbになり、上記と同じコマンドを使用してデータベースに変更する必要があります。
mongooseを使用するには、app.jsファイルでそれを要求し、mongodb://localhostで実行されているmongodサービスに接続します
これでアプリがデータベースに接続されました。新しいモデルを作成しましょう。 このモデルは、データベース内のコレクションとして機能します。 新しいモデルを作成するには、ルートを定義する前に次のコードを使用します。
上記のコードは、人のスキーマを定義し、mongoose Model Person を作成するために使用されます。
ドキュメントを保存する
次に、人の詳細を取得してデータベースに保存する新しいhtmlフォームを作成します。 フォームを作成するには、viewsディレクトリに次の内容のperson.pugという新しいビューファイルを作成します。
また、index.jsに新しいgetルートを追加して、このドキュメントをレンダリングします。
localhost:3000/personに移動して、フォームが正しく表示されているかどうかを確認します。 これは単なるUIであり、まだ機能していないことに注意してください。 これがフォームの外観です。
ここで、このリクエストを処理するポストルートハンドラーを '/person’で定義します。
上記のコードで、空のフィールドを受信した場合、またはフィールドを受信しなかった場合、エラー応答を送信します。 ただし、整形式のドキュメントを受け取った場合は、PersonモデルからnewPersonドキュメントを作成し、* newPerson.save()関数を使用してDBに保存します。 これはmongooseで定義され、引数としてコールバックを受け入れます。 このコールバックには、 *error および response の2つの引数があります。 これにより、show_messageビューがレンダリングされるため、これも作成する必要があります。
このルートからの応答を表示するには、 show_message ビューも作成する必要があります。 次のコードで新しいビューを作成します。
以下は、フォーム(show_message.pug)の送信に成功したときに受け取る応答です。
これで、人を作成するためのインターフェースができました!
ドキュメントを取得する
Mongooseはドキュメントを取得するための多くの機能を提供しますが、そのうちの3つに焦点を当てます。 これらの関数はすべて、最後のパラメーターとしてコールバックを使用し、save関数と同様に、それらの引数はエラーと応答です。
3つの機能は-
Model.find(条件、コールバック)
この関数は、条件オブジェクトのフィールドに一致するすべてのドキュメントを検索します。 Mongoで使用されているのと同じ演算子は、mongooseでも機能します。 たとえば、これにより、個人のコレクションからすべてのドキュメントが取得されます。
これにより、フィールド名が「Ayush」で年齢が20のすべてのドキュメントが取得されます。
必要な投影、つまり必要なフィールドも提供できます。 たとえば、*国籍*が_ "Indian" _である人々の*名前*のみが必要な場合、次を使用します-
Model.findOne(条件、コールバック)
この関数は、常に最も関連性の高い単一のドキュメントを取得します。 Model.find()とまったく同じ引数を持ちます。
Model.findById(id、コールバック)
この関数は、最初の引数として _id (mongoで定義)、オプションの投影文字列、および応答を処理するためのコールバックを受け取ります。 例えば、
すべての人のレコードを表示するルートを作成しましょう。
ドキュメントの更新
Mongooseは、ドキュメントを更新するための3つの機能を提供します。
Model.update(条件、更新、コールバック)
この関数は条件を取得し、入力としてオブジェクトを更新し、コレクション内の条件に一致するすべてのドキュメントに変更を適用します。 たとえば、次のコードはすべてのユーザー文書を更新して、国籍が「アメリカ人」になるようにします。
Model.findOneAndUpdate(条件、更新、コールバック)
まさにそのとおりです。 クエリに基づいて1つのドキュメントを検索し、2番目の引数に従ってドキュメントを更新します。 また、最後の引数としてコールバックを取ります。 例えば、
Model.findByIdAndUpdate(id、更新、コールバック)
この関数は、IDで識別される単一のドキュメントを更新します。 例えば、
人を更新するルートを作成しましょう。 これは、パラメーターとしてidを持ち、ペイロードに詳細を持つPUTルートになります。
このルートをテストするには、ターミナルで次のように入力します(IDを作成した人のIDに置き換えます)。
これにより、ルートで提供されたIDに関連付けられたドキュメントが上記の詳細で更新されます。
ドキュメントを削除する
- C * reate、* R * ead、* U *pdateについて説明しましたが、今度はmongooseを使用してドキュメントを削除する方法を確認します。 ここには、更新とまったく同じ3つの関数があります。
Model.remove(条件、[コールバック])
この関数は、条件オブジェクトを入力として受け取り、条件に一致するすべてのドキュメントを削除します。 たとえば、20歳のすべての人を削除する必要がある場合
Model.findOneAndRemove(条件、[コールバック])
この関数は、条件オブジェクトに応じて、最も関連性の高いドキュメントを削除します。 例えば、
Model.findByIdAndRemove(id、[callback])
この関数は、IDで識別される単一のドキュメントを削除します。 例えば、
それでは、データベースから人を削除するルートを作成しましょう。
これをテストするには、次のcurlコマンドを使用します-
これにより、指定されたIDを持つ人が削除され、次のメッセージが生成されます。 −
これで、MongoDB、mongoose、およびKoaを使用して簡単なCRUDアプリケーションを作成する方法をまとめました。 mongooseをさらに詳しく調べるには、http://mongoosejs.com [APIドキュメント]をお読みください。