Node.jsの軽量言語の背景には、JSベースのオペレーティング環境chormeのV8エンジン、KOAフレームの使用は簡単に自分のローカルサービスを構築することができます。ここで私はKOAとMongoDBを持つ単純なデータベースのCRUDを実装しました。
まず、依存関係をインストール
使用NPMや糸ができ、私はここで使用していた糸があります
1、yarn add koa //安装koa
2、糸追加KOA-ルータ// KOA-ルータを設置、簡単なルート
KOA-ビューをインストール// 3、糸追加KOA-ビュー、ビューテンプレートの設定
図4に示すように、糸ポストリクエストを処理するため、KOA-本体//取付KOA-体を追加
5、糸アドオンマングース//インストールマングース、データベースの操作
第二に、KOAの使用は、ローカルサービスを作成します
koa.js 文件
必要興亜=定数( 'KOA' ) のconst {}参加 =必要とする( 'パス' ) CONST koaBody =( 'KOA-体'必要) CONSTビュー =( 'KOA-ビュー'が必要) CONSTルータ =「(必要./ルータ「) // インポートルーティングモジュール、以下の詳細なコードが存在することになる のApp = constの新しい新しい興亜 のApp .USE(ビュー(参加(__ dirnameは、『ビュー』)、{ // 設定ビューテンプレート、HTMLは、フォルダビュー内に格納されたファイル / / 機能ノードはあなたにもパグと他のテンプレートとして設定することができますhtmlページに直接設定することができ、サーバー側のレンダリングは、ファイルである 拡張子:「HTML」 })) .USE(koaBody())// ハンドルポスト要求が .USE(ルータ。ルート()) //1 .USE(router.allowedMethods())// 2 // ステップ1はKOA例アプリ本体が経路に結合している 8000(.listen、ERR => { !&& ERRはconsole.log(「サービスが正常に起動し、リスニングポート8000 " ) })
この時点で、コマンドライン入力ノードkoa.jsは8000で、ポートモニタの成功を実行します!
第二に、データベースはマングースを介して接続されています
mongodb.jsファイル
1 CONST =マングース( 'マングース'が必要) 2 // 新しいデータベース接続は、のcreateConnection接続を使用しないよう推奨マングース 3。 mongoose.createConnection DB CONST =( 'のMongoDB:// localhostの:27017 /ユーザー' 、{ 4は // これを追加警告を回避するために、2つのパラメータ 5。 useNewUrlParser:trueに、 図6 useUnifiedTopology:trueに 7 }) 。8 。9 // ES6カバープロミスプロミスマングースカスタム実装では、我々は、プロミスES6等を用い 10 mongoose.Promise = global.Promise 11。 db.on( 'エラー'、(ERR)=> {にconsole.log(ERR)}) 12でありdb.on( 'オープン'、() => {にconsole.log( 'のMongoDB 接続成功' )}) 13であり、 CONST =スキーマmongoose.Schema // GETスキーマコンストラクタ 14 CONST = UserShcema 新しい新しいスキーマ({ // 使用スキーマ挿入データ型定義 15 名:{ 16 タイプ:文字列を、 17は 必須:真の 18である }、 19 年齢:数、 20は 性別:{ 21は タイプ:文字列、 22は デフォルト: "M" 23である } 24 }、{versionKey:falseに、タイムスタンプ:{ 25 createdAt: "作成" 26 }}) 27 28 // 所定の基準を使用してコレクションを作成するが、それはコンストラクタを返し、データ挿入Shcema定義 29 CONST =ユーザーdb.Model(「ユーザ」、UserShcema)は 30人の // ユーザーが曝露され、使用されてもよいですオペレーティングデータ 31はある exports.Usersユーザー=
データベースのコードの書き込みは、データベースを操作するために、ルーティングが続き、完成され、CRUDを達成するために
第三に、ルートを実装するために使用しKOA-ルータ
router.jsファイル
必要とルーター=一定(「KOA-ルータ」) のconst {}ユーザー =必要(「./ MongoDBは」) ルータのconst = 新しい新しいルーター説明:我々はlocalhost:ローカルサービスへの8000回のアクセスは、デフォルトの戻りルートは、次のことができ、ルートであります以前のテンプレートビューを設定されていない場合はインデックスページをレンダリング、それはctx.render方法は存在しません。koa2好ましくミドルウェア非同期コールバックを使用することをお勧めし、ミドルウェア機能は、バック経路とは非同期であり、経路は、1つまたは複数のミドルウェアを有することができ、次の実行は、次の方法により行われていないかを決定ミドルウェア (router.get
「/」 、非同期CTX => { のawait ctx.render( 'インデックス' ) }) // 増加 router.post( '/ addtion'、非同期CTX => { CONST {名前、年齢、性別} = ctx.request.body CONSTユーザー = 新しい新しいユーザー({ 名前、 年齢、 セックス }) // Saveメソッドは非同期であり、それはctx.body後、実行前に完了するために、あなたはそれ以外の場合は、ctx.bodyページに戻ることができない、待たなければならない のconst = isSuccess のawait user.save() .then(() => { console.log( 'が正常に保存された' ) の戻り trueに }) 。キャッチ(ERR => { にconsole.log(ERR) の戻り 偽 }) ctx.body = isSuccess 'が正常に追加' :? 'を追加することができなかった' }) // 削除 router.get( '/削除'、非同期CTX => { CONST isSuccessawait Users.deleteMany =(ctx.query).then(RES =>{ 戻りRES 。})キャッチ(()=> { リターン 偽 }) ctx.body = IsSuccess `正常に削除$ data`の{} isSuccess.n:? 'の削除に失敗しました' }) // 変更 router.get( '/修正'、CTX非同期=> { constの結果 = のawait Users.updateMany( ctx.query、 {$ SET:{ '名': 'のMongoDB' } })。その後、(RES => { 戻りRES 。})キャッチ(()=> { リターン 偽へ }) ctx.body=結果?'修改成功': '修改失败' }) // 查 router.get( '/位置決め'、非同期CTX => { CONST結果 =のawait Users.find(ctx.query).then(RES => { 戻りRES } )。キャッチ((ERR)=> { 戻りERR }) ctx.body = 結果 }) module.exportsは =ルータ
ここでは、ユーザがポストの要求の増加に加えて、残りはGETが交換され、これは標準ではありませんが、簡単にするために、図は、単にアイデアを表現します。その後、我々は手動で変更検索結果へのURLパラメータの追加および削除を変更することによって達成することができます:
例えば:
http:// localhostを:? 8000 /削除年齢= 18私はdeleteManyを使用していますので、また、単一deleteOneを削除するために使用することができ、18のすべてのユーザーの年齢を削除します